2014-06-15 11 views
5

मैं() उप-डोमेन में ajax अनुरोध के माध्यम से प्रमाणीकरण :: चेक के साथ समस्या आ रही है .. परिदृश्य: 2 उप डोमेनLaravel CORS उपडोमेन सत्र

www.testing.dev 
api.testing.dev 

एकल प्रवेश/में उन दोनों के बीच सत्र .. laravel config/session.php मैंने 'domain' => ".testing.dev" सेट किया है, और सब कुछ ठीक काम कर रहा है, मैं एक पेज में लॉगिन करने में सक्षम हूं और दूसरे पेज में भी लॉग इन करना जारी रखता हूं!

लेकिन जब मैं का उपयोग ajax वहाँ एक समस्या .. परिदृश्य है: api.testing.dev में जा रहा है, मैं, फ़ायरबग के साथ प्रदर्शन js, जो कुछ भी

$.ajax({ 
    url: 'http://api.testing.dev/who', 
    type: 'GET', 
    cache: false 
}); 

api.stesting.dev/who रिटर्न:

public function getWho(){ 
    return var_dump(Auth::user()); 
} 

प्रतिक्रिया मेरे खाते की जानकारी है! सभी सही ..

www.testing.dev से मैं एक ही AJAX क्वेरी करता हूं, मुझे Auth :: चेक() वापस शून्य मिलती है। हालांकि मैं सामान्य प्रतिक्रिया है, तो क्रॉस डोमेन सेटअप के साथ कोई समस्या नहीं मिल .. यहाँ api.testing.dev

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: OPTIONS, POST, GET, PUT, DELETE'); 
header('Access-Control-Allow-Headers: *'); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Credentials: true'); 

वेबसाइट WAMP साथ स्थानीय होस्ट में चल रहा है के लिए मार्ग में मेरी हेडर हैं।

संपादित करें: प्रारंभिक लॉगिन के बाद, डिफ़ॉल्ट सत्र ड्राइवर 'driver' => 'file' के साथ, app/storage/sessions में एक फ़ाइल है। और अगर मैं एक सबडोमेन से दूसरे में जाता हूं, तो कोई अन्य फाइलें उत्पन्न नहीं होती हैं। हालांकि जब मैं एक सीओआरएस AJAX preform, हर बार एक नई फाइल उत्पन्न होता है ...

+1

बिल्कुल वही समस्या का अनुभव करना। –

+0

त्वरित प्रश्न, आप अपनी कुकीज़ का डोमेन कैसे सेट करते हैं? ऐप/config/session.php फ़ाइल में –

+1

, 'डोमेन' को उचित रूप से सेट करें। (एक बहु उप-डोमेन साइट के लिए इसे ".site.com" पर सेट करें) – ActonDev

उत्तर

0

अपनी कॉन्फ़िगरेशन को देखते हुए, शायद आपके पास एक ही समस्या है। मैं ऑथ का उपयोग नहीं कर रहा था, लेकिन सत्र और null हर बार मिला।

header('Access-Control-Allow-Origin: *'); 
... 
header('Access-Control-Allow-Credentials: true'); 
इस के लिए

:: मैं इस बदलकर इसे हल

header('Access-Control-Allow-Origin: http://localhost:9000'); 
... 
header('Access-Control-Allow-Credentials: true'); 

कारण मैंने पाया कि है कि जब आप क्रेडेंशियल्स का उपयोग यह सुरक्षा उद्देश्यों के लिए मूल निर्दिष्ट करने के लिए की जरूरत है, और AJAX के लिए अनुरोध है कि इसे प्रमाण पत्र निर्दिष्ट करने की भी आवश्यकता है। मैं कोणीय का उपयोग करता हूं और मैंने इसे $httpProvider.defaults.withCredentials=true; के साथ किया है, लेकिन मुझे वास्तव में jQuery के लिए संबंधित निर्देश नहीं पता है, लेकिन मुझे उम्मीद है कि आप इसे पा सकते हैं।

अपने पसंदीदा डीबगर (मेरे लिए फायरबग) के अनुरोध और प्रतिक्रिया के शीर्षलेखों की जांच करें। उनके पास कुकी विशेषता होनी चाहिए (इसमें "लार्वेल", "टोकन" आदि के साथ कुछ शामिल है) कि दूसरी बार पहले प्रतिक्रिया शीर्षलेख के बराबर होना चाहिए।

संबंधित मुद्दे