कुकी समर्थन के लिए जाँच का एक सामान्य तरीका पुनर्निर्देशित है।
यह केवल एक अच्छा विचार है जब उपयोगकर्ता ऐसा कुछ करने की कोशिश कर रहा है जो सत्र शुरू करता है, जैसे लॉग इन करना या अपनी गाड़ी में कुछ जोड़ना। अन्यथा, आप इसे कैसे संभालते हैं, इस पर निर्भर करते हुए, आप संभावित रूप से उपयोगकर्ताओं के लिए अपनी संपूर्ण साइट तक पहुँच को रोक रहे हैं - या बॉट - जो कुकीज़ का समर्थन नहीं करते हैं।
सबसे पहले, सर्वर लॉगिन डेटा को सामान्य के रूप में जांचता है - यदि लॉगिन डेटा गलत है तो उपयोगकर्ता उस फीडबैक को सामान्य रूप से प्राप्त करता है। यदि यह सही है, तो सर्वर तुरंत कुकी और एक पृष्ठ पर पुनर्निर्देशित करता है, जो उस कुकी के लिए जांचने के लिए डिज़ाइन किया गया है - जो कि केवल एक ही URL हो सकता है, लेकिन क्वेरी स्ट्रिंग में जोड़े गए कुछ ध्वज के साथ। यदि वह दूसरा पृष्ठ कुकी प्राप्त नहीं करता है, तो उपयोगकर्ता को यह कहते हुए एक संदेश प्राप्त होता है कि वे लॉग इन नहीं कर सकते क्योंकि कुकीज़ उनके ब्राउज़र पर अक्षम हैं।
यदि आप पहले से ही अपने लॉगिन फ़ॉर्म के लिए पोस्ट-रीडायरेक्ट-गेट पैटर्न का पालन कर रहे हैं, तो कुकी की यह सेटिंग और जाँच कोई अतिरिक्त अनुरोध नहीं जोड़ती है - कुकी को मौजूदा रीडायरेक्ट के दौरान सेट किया जा सकता है, और लोड होने वाले गंतव्य द्वारा चेक किया जा सकता है रीडायरेक्ट के बाद।
अब मैं हर पेज लोड के अलावा उपयोगकर्ता द्वारा शुरू की गई कार्रवाई के बाद केवल कुकी परीक्षण क्यों करता हूं। मैंने देखा है कि साइटें हर एक पृष्ठ पर एक कुकी परीक्षण लागू करती हैं, यह महसूस नहीं करती हैं कि इससे खोज इंजन जैसी चीजों पर प्रभाव पड़ने वाला है जो साइट को क्रॉल करने की कोशिश कर रहे हैं। यही है, अगर किसी उपयोगकर्ता के पास कुकीज़ सक्षम है, तो परीक्षण कुकी एक बार सेट की जाती है, इसलिए उन्हें केवल पहले पृष्ठ पर रीडायरेक्ट को सहना होगा जो वे अनुरोध करते हैं और उसके बाद से कोई रीडायरेक्ट नहीं होते हैं। हालाँकि, किसी भी ब्राउज़र या अन्य उपयोगकर्ता-एजेंट के लिए, एक खोज इंजन की तरह, जो कुकीज़ को वापस नहीं करता है, हर एक पृष्ठ का परिणाम केवल पुनर्निर्देशित हो सकता है।
कुकी के समर्थन के लिए जाँच का एक और तरीका जावास्क्रिप्ट के साथ है - इस तरह, कोई रीडायरेक्ट आवश्यक नहीं है - आप एक कुकी लिख सकते हैं और इसे वापस पढ़ने के लिए लगभग तुरंत देख सकते हैं कि क्या यह संग्रहीत किया गया था और फिर पुनर्प्राप्त किया गया था। इसका नकारात्मक पक्ष यह है कि यह क्लाइंट की तरफ स्क्रिप्ट में चलता है - यानी यदि आप अभी भी इस बारे में संदेश चाहते हैं कि क्या सर्वर पर वापस आने के लिए कुकीज़ का समर्थन किया जाता है, तो आपको अभी भी इसे व्यवस्थित करना होगा - जैसे कि अजाक्स कॉल के साथ।
अपने स्वयं के आवेदन के लिए, मैं 'लॉगिन CSRF' हमलों के लिए कुछ सुरक्षा लागू करता हूं, CSRF हमलों का एक प्रकार, उपयोगकर्ता लॉग इन करने से पहले लॉगिन स्क्रीन पर एक यादृच्छिक टोकन युक्त कुकी सेट करके और उपयोगकर्ता द्वारा उनके लॉगिन को चेक करने पर उस टोकन की जाँच करता है। विवरण। Google से लॉगिन CSRF के बारे में और पढ़ें। इसका एक दुष्प्रभाव यह है कि जिस क्षण वे लॉग इन करते हैं, मैं उस कुकी के अस्तित्व की जांच कर सकता हूं - एक अतिरिक्त रीडायरेक्ट आवश्यक नहीं है।