2008-09-18 2 views
7

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

  • IE 6 और 7
  • Firefox 2 और 3
  • सफारी

और सभी मामलों दौरान Ajax अनुरोध हैंडलिंग HttpServletResponse वस्तु पर मानक कुकी संचालन सही ढंग से थे में ब्राउज़र द्वारा व्याख्या की गई, लेकिन मैं जानना चाहूंगा कि क्या कुकी मैनिपुलेशन को क्लाइंट पक्ष में धक्का देना सर्वोत्तम है या यदि यह (अधिक क्लीनर) सर्वर साइड कुकी हैंडलिंग पर भरोसा किया जा सकता है।

मैं सामान्य रूप से डीडब्लूआर फ्रेमवर्क और अजाक्स के लिए विशिष्ट दोनों का स्वागत करता हूं।

+0

मुझे इस बारे में आश्चर्य हुआ क्योंकि मुझे सर्वर-साइड डीडब्लूआर अनुरोध में कुकी को हटाने में परेशानी हुई है। मैं उन्हें ठीक बना सकता हूं लेकिन उन्हें हटा नहीं सकता - तब से यह सुनिश्चित करने के बाद एक कुकी-मुक्त समाधान निकाला गया है कि यह नहीं किया जा सका। –

उत्तर

8

XMLHttpRequest हमेशा वेब ब्राउज़र के कनेक्शन ढांचे का उपयोग करता है। AJAX प्रोग्रामों को सही तरीके से काम करने की आवश्यकता है क्योंकि उपयोगकर्ता को लॉग आउट हो जाएगा यदि XHR ऑब्जेक्ट में ब्राउज़र के कुकी पूल तक पहुंच की कमी है।

यह वेब ब्राउज़र के लिए सैद्धांतिक रूप से संभव है कि ब्राउज़र के कनेक्शन ढांचे का उपयोग किए बिना सत्र कुकीज़ साझा करें, लेकिन यह कभी भी (मेरे ज्ञान के लिए) अभ्यास में नहीं हुआ है। यहां तक ​​कि फ्लैश प्लगइन भी वेब ब्राउज़र के कनेक्शन का उपयोग करता है।

इस प्रकार अंतिम परिणाम यह है कि यह AJAX के माध्यम से कुकीज़ में हेरफेर करने के लिए सुरक्षित है। बस ध्यान रखें कि AJAX कॉल कभी नहीं हो सकता है। वे गारंटीकृत घटनाएं नहीं हैं, इसलिए उन पर भरोसा न करें।

+0

धन्यवाद, छोटी मात्रा में भिन्न राय के बावजूद, यह सर्वर के पक्ष में व्यापार तर्क को केंद्रीकृत करने के आसपास अपने स्वयं के परीक्षा परिणाम, वोट, और सामान्य सर्वोत्तम प्रथाओं को सबसे अधिक समझ में आता है। – Peter

+0

मेरी खुशी। फ्लैश और जावास्क्रिप्ट के लिए एक मल्टीप्लेयर गेम एपीआई बनाते समय मैंने इस क्षेत्र में काफी कुछ शोध किया है। HTTP आरएफसी द्वारा लगाए गए 2 कनेक्शन सीमा के लिए धन्यवाद, यह जल्दी से स्पष्ट हो गया कि मैं ब्राउज़र के कनेक्शन का उपयोग कर रहा था। कुकीज़ ने इस जानकारी की पुष्टि की। – 64BitBob

-1

क्लाइंट पक्ष पर कुकीज़ को मैनिपुलेट करना बल्कि "सर्वोत्तम अभ्यास" के विपरीत है। और यह आवश्यक नहीं होना चाहिए, या तो। केवल कुछ भी नहीं के लिए कुकीज़ शुरू नहीं की गई थी।

+0

वह ग्राहक पर कुकीज़ में हेरफेर नहीं कर रहा है; वह अजाक्स अनुरोध के जवाब में सर्वर पर उन्हें जोड़ रहा है। किसी भी मामले में, क्लाइंट-साइड कुकी मैनिपुलेशन को आम तौर पर तब तक हानिकारक नहीं माना जाता है जब तक कि जेएस अक्षम या असमर्थित होने पर यह गहराई से घटता है। –

1

डीडब्लूआर के संदर्भ में यह "सुरक्षित" नहीं हो सकता है।

से पढ़ने the DWR site यह कहते हैं:

यह महत्वपूर्ण है कि आप HTTP अनुरोध और के रूप में केवल पढ़ने के लिए प्रतिक्रिया का इलाज। जबकि HTTP शीर्षलेख ठीक हो सकते हैं, वहां एक अच्छा मौका है कि कुछ ब्राउज़र उन्हें अनदेखा कर देंगे।

मैंने इसका मतलब यह लिया है कि कुकीज़ या अनुरोध गुणों को सेट करना नो-नो है।
यह कहकर, मेरे पास कोड है जो अनुरोध गुण सेट करता है (कोड जिसे मैंने उस पृष्ठ को पढ़ने से पहले लिखा था) और ऐसा लगता है कि यह ठीक काम करता है (उपरोक्त मेरी टिप्पणी में उल्लिखित कुकीज़ को हटाने के अलावा)।

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