2012-12-19 18 views
8

का उपयोग कर फ़ायरफ़ॉक्स में सेट कर रहा है, मैं domain दायर साइट अनुरोध का उपयोग करके जोड़ा गया है जब मैं कुकी सेट करने में सक्षम नहीं हूं। मैं jquery AJAX के माध्यम से अनुरोध कॉल करके प्राप्त करने की कोशिश कर रहा हूं।डोमेन फ़ील्ड के साथ कोरस कुकी केवल jQuery AJAX

क्या यह फ़ायरफ़ॉक्स की तुलना में अन्य ब्राउज़रों में काम करना संभव है?

कुछ अनुरोध हेडर:

Accept:application/json, text/javascript, */*; q=0.01 
Content-Length:55 
Content-Type:application/x-www-form-urlencoded; charset=UTF-8 
Host:localhost:53862 
Origin:http://localhost:54265 
Referer:http://localhost:54265/ 

प्रतिक्रिया हेडर:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:x-requested-with, origin, content-type, accept, Proxy-Connection 
Access-Control-Allow-Methods:GET,POST,PUT,OPTIONS, DELETE 
Access-Control-Allow-Origin:http://localhost:54265 
Set-Cookie:Auth=l_hash=123456&user=xyzl&remember_me=false; expires=Fri, 18 Jan 2013 13:42:10 GMT; domain=localhost; path=/ 

कोड:

$.ajax({ 
    type: "PUT", 
    url: apiHost + "api/account/login/", 
    data: $("#loginBarForm").serialize(), 
    dataType: "json", 
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
    crossDomain: true, 

    xhrFields: { 
     withCredentials: true 
    }, 
}); 

Ev फ़ायरफ़ॉक्स में erything ठीक है। क्रोम कुकी सेट नहीं कर रहा है। केवल अगर डोमेन फ़ील्ड हटा दी जाती है तो सभी ब्राउज़र पर काम कर रहे हैं। मैं देख सकता हूं कि अगले अनुरोध में (कुकी सेट करने के बाद) कुकी हेडर में दिखाई देती है। प्रतिक्रिया सेटिंग कुकी के बाद फ़ायरफ़ॉक्स अनुरोध (जब प्रतिक्रिया डोमेन क्षेत्र था) से उदाहरण:

Cookie: Auth=l_hash=123456&user=xyz&remember_me=false 
+0

क्या आप सुनिश्चित हैं कि 'लोकहोस्ट'' सेट-कुकी 'शीर्षलेख के लिए एक वैध डोमेन है? [आरएफसी] के अनुसार (http://www.ietf.org/rfc/rfc2109.txt), इसमें कम से कम एक "एम्बेडेड" डॉट होना चाहिए। फ़ायरफ़ॉक्स इसे कम प्रतिबंधित तरीके से कार्यान्वित कर सकता है। इसके बजाए अपना आईपी पता आज़माएं। – Stan

+0

@Stan बहुत बहुत धन्यवाद, कृपया इसे एक उत्तर के रूप में पोस्ट करें। – Mariusz

उत्तर

5

मुझे लगता है कि समस्या localhost साथ हो सकता है, जो Set-Cookie हेडर के लिए मान्य डोमेन नहीं है। RFC के अनुसार, इसमें कम से कम एक "एम्बेडेड" डॉट होना चाहिए। फ़ायरफ़ॉक्स इसे कम प्रतिबंधित तरीके से कार्यान्वित कर सकता है। इसके बजाए अपना आईपी पता आज़माएं।

+0

बस 'localhost' को' 127.0.0.1' के साथ बदलकर मेरे लिए काम किया। धन्यवाद! – Matt

3

मुझे यह वही समस्या थी, और यह पता चला कि ब्राउज़र सेटिंग्स तीसरे पक्ष की कुकीज़ को अवरुद्ध कर रही थीं (क्रोम> सेटिंग्स> उन्नत सेटिंग्स> गोपनीयता> सामग्री सेटिंग्स> तृतीय-पक्ष कुकीज़ और साइट डेटा ब्लॉक करें)। कुकीज़ को अनुमति देने से समस्या हल हो गई!

+0

हां, इसने निराशा के घंटों के बाद मेरी समस्या हल की! केवल मेरे मामले में, मैंने फ़ायरफ़ॉक्स को तृतीय-पक्ष कुकीज को अवरुद्ध कर दिया था, और क्रोम उन्हें अनुमति देता था। – alexw