2009-06-24 11 views
35

मैं जानना चाहता हूं कि, जब मैं $ .post (...) jQuery के साथ, पोस्ट अनुरोध में सर्वर पर भेजी गई कोई कुकी है?क्या jQuery एक पोस्ट में कुकीज़ भेजता है?

धन्यवाद!

+2

आप Firebug का उपयोग करते हैं, तो आप "कंसोल में देख सकते हैं:

मेरे लिए सरल ठीक तो की तरह मेरे ajax अनुरोध में करने के लिए सभी कुकी के पथ/jQuery के साथ स्थापित करने के लिए था "क्षेत्र को किसी भी अनुरोध के लिए देखने के लिए। कुकी डेटा के लिए हेडर में देखें। –

उत्तर

54

कुकीज अजाक्स अनुरोधों के साथ भेजे जाते हैं।

जब HTTPOnly ध्वज कुकी के लिए सेट किया गया है, तो यह कुकी क्लाइंट-साइड स्क्रिप्ट से छिपी हुई है, लेकिन कुकी अभी भी अजाक्स अनुरोधों के साथ भेजी गई है।

+3

HTTP केवल AJAX/HTTP अनुरोधों को प्रभावित नहीं करता है, यह केवल क्लाइंट-साइड स्क्रिप्ट से कुकी को छुपाता है। यह अभी भी सर्वर पर भेजा जाएगा। –

+1

@ क्रिस्टियन - सही, धन्यवाद। –

2

क्लाइंट और सर्वर पर एक ही कुकीज का उपयोग करना संभव नहीं है जब आपके पास httpOnlyCookies चालू हो। वहाँ बहुत पर बहुत अच्छे कारण के स्विच यह है:

http://www.codinghorror.com/blog/archives/001167.html

+0

+1 उस लिंक के लिए धन्यवाद! – MSpreij

+2

यह गलत है। HTTPOnly + AJAX की वास्तव में अच्छी व्याख्या के लिए इस प्रश्न पर एक नज़र डालें: http://stackoverflow.com/questions/27972/are-httponly-cookies-a-viable-option-for-an-ajax-website –

2

फ़ायरफ़ॉक्स + Firebug का उपयोग करते हुए आप देख सकते हैं jQuery भेजता है कि वास्तव में क्या है, और कैसे। डिबगिंग के लिए उपयोगी!

0

गीले कंबल होने के लिए खेद है, लेकिन मैं यहां सकारात्मक वाइब्स का खंडन करने जा रहा हूं और नहीं कहूंगा।

मैं वर्तमान में अपने एपीआई बैकएंड से कनेक्ट करने के लिए $ .post का उपयोग कर एक ऐप बना रहा हूं, जो Express और node.js द्वारा संचालित है। मैं प्रत्येक अनुरोध में भेजे गए कुकीज़ को पढ़ने के लिए एक्सप्रेस कुकी पार्सर मिडलवेयर का उपयोग कर रहा हूं। यदि मैं सीधे ब्राउज़र के माध्यम से अपना एंडपॉइंट हिट करता हूं तो बैकएंड सर्वर मेरे डोमेन पर दिखाई देने वाली कुकीज़ देख सकता है। हालांकि, जब मैं अपने ऐप में $ .post का उपयोग करता हूं तो कुकी ऑब्जेक्ट बस खाली होता है।

यह संभव मैं कुछ याद कर रहा हूँ, लेकिन मैं पिछले कुछ घंटों के लिए इस परीक्षण किया गया है और इस निष्कर्ष पर मैं करने के लिए किया जाता है कि कुकीज़ बस नहीं एक jQuery $ .post अनुरोध का उपयोग कर भेजा जाता है आ गया है:/

+0

के साथ प्रयास करें एक सामान्य एचटीएमएल पोस्ट। आपकी कुकी डीबगर खराब लगता है। चाहे कुकी भेजी जाती है या नहीं, एक ब्राउज़र निर्णय है, स्क्रिप्ट/jquery नहीं। –

+8

ऐसा इसलिए है क्योंकि आप एक क्रॉस-डोमेन अनुरोध कर रहे हैं, और कुकीज़ को क्रॉस-डोमेन XHR अनुरोधों के साथ नहीं भेजा जाता है। http://stackoverflow.com/questions/7911710/jquery-ajax-call-not-sending- कुकी – Josh

0

विचार करने की एक बात कुकी पथ है। यदि कोई AJAX-loaded स्क्रिप्ट एक कुकी सेट करता है तो उसका पथ पैरेंट पेज से अलग हो सकता है, इसे कुछ सर्वर अनुप्रयोगों या JQuery के लिए अलग-अलग दायरे में डाल सकता है। मैंने आज अपने पहियों को कताई में थोड़ी देर बिताई, फिर मैंने देखा कि कुकीज़ को पढ़ने में परेशानी हो रही थी, जिसमें एक अलग पथ सेट था।

$.cookie("isolates_grid_tgl", "true", { path: "/" }); 

firebug cookies view

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