एक AJAX प्रतिक्रिया एक कुकी सेट कर सकती है? यदि नहीं, तो मेरा वैकल्पिक उपाय क्या है? क्या मुझे इसे जावास्क्रिप्ट या कुछ इसी तरह से सेट करना चाहिए?
एक AJAX प्रतिक्रिया एक कुकी सेट कर सकती है? यदि नहीं, तो मेरा वैकल्पिक उपाय क्या है? क्या मुझे इसे जावास्क्रिप्ट या कुछ इसी तरह से सेट करना चाहिए?
जवाबों:
हाँ , आप सर्वर-साइड कोड में AJAX अनुरोध में कुकी सेट कर सकते हैं जैसे आप सामान्य अनुरोध के लिए करेंगे क्योंकि सर्वर सामान्य अनुरोध या AJAX अनुरोध के बीच अंतर नहीं कर सकता है।
AJAX अनुरोध सर्वर से अनुरोध करने का एक विशेष तरीका है, सर्वर को किसी भी HTTP अनुरोध के रूप में वापस जवाब देने की आवश्यकता होगी। अनुरोध की प्रतिक्रिया में आप कुकीज़ जोड़ सकते हैं।
If the user agent supports HTTP State Management it should persist, discard and send cookies (as received in the Set-Cookie response header, and sent in the Cookie header) as applicable.
- w3.org/TR/XMLHttpRequest से
XMLHttpRequest के लिए w3 कल्पना खंड 4.6.3 के अनुसार एक उपयोगकर्ता एजेंट को सेट-कुकी हेडर का सम्मान करना चाहिए। तो इसका जवाब है हां आपको सक्षम होना चाहिए।
उद्धरण:
यदि उपयोगकर्ता एजेंट HTTP स्टेट मैनेजमेंट का समर्थन करता है, तो उसे कुकीज को छोड़ना, छोड़ना और भेजना चाहिए (जैसा कि सेट-कुकी प्रतिक्रिया हेडर में प्राप्त किया गया है, और कुकी हेडर में भेजा गया है) लागू होता है।
रिकॉर्ड के लिए, सलाह दी जाती है कि उपरोक्त सभी (अभी भी) केवल तभी सही है जब AJAX कॉल उसी डोमेन पर की गई हो। यदि आप AJAX का उपयोग करके किसी अन्य डोमेन पर कुकीज़ सेट करना चाह रहे हैं, तो आप एक बिलकुल अलग प्रकार के कीड़े खोल सकते हैं । क्रॉस-डोमेन कुकीज़ पढ़ना काम करता है, हालांकि (या कम से कम सर्वर उनकी सेवा करता है; चाहे आपके ग्राहक का यूए आपके कोड को उन्हें एक्सेस करने की अनुमति देता है, फिर से, एक अलग विषय है; 2014 के अनुसार वे करते हैं)।
withCredentials=true
को xhr
ऑब्जेक्ट के लिए सेट करने की आवश्यकता है (2) Access-Control-Allow-Credentials
विकल्प प्रीफ़्लाइट अनुरोध के साथ-साथ वास्तविक अनुरोध दोनों सेट करें (3) कुकी को आवश्यकतानुसार सेट करें
यह भी जांच लें कि आपका सर्वर एक गैर http अनुरोध पर सुरक्षित कुकीज़ सेट नहीं कर रहा है। बस पता चला कि मेरे अजाक्स अनुरोध को "सुरक्षित" सेट के साथ एक php सत्र मिल रहा था। क्योंकि मैं https पर नहीं था इसलिए यह सत्र कुकी वापस नहीं भेज रहा था और मेरा सत्र प्रत्येक ajax अनुरोध पर रीसेट हो रहा था।