2009-11-25 8 views
13

में कुकी को कैसे निकालें I सर्वर पर प्राप्त HTTP अनुरोध से कुकी को निकालने की आवश्यकता है। इसे क्लाइंट पर करना (जो इस कुकी को लिखता है) या सर्वर पर (जो इसे पढ़ता है) एक विकल्प नहीं है। मेरे पास अपाचे 2.0 है जो प्रॉक्सी क्लाइंट और सर्वर के बीच अनुरोध करता है, इसलिए मैं mod_rewrite का उपयोग करके अपाचे में कुकी को हटाने की उम्मीद कर रहा था।अपाचे

मेरा सवाल है, क्या mod_rewrite का उपयोग कर HTTP अनुरोध से एक निश्चित कुकी को निकालने का कोई तरीका है?

यदि संभव हो तो नहीं अनुरोध से सभी कुकीज़ हटाने के लिए एक अंतिम उपाय के रूप तो बस एक कुकी दूर करने के लिए?

यदि मैं इस कार्य के लिए mod_rewrite सही उपकरण नहीं है तो इसे पूरा करने के तरीके के बारे में अन्य सुझावों के लिए खुला हूं।

+3

आप सीओ झंडा –

उत्तर

19

अपाचे mod_rewrite यूआरएल में हेरफेर की अनुमति देता है लेकिन HTTP शीर्षकों के नहीं, हालांकि 'mod_headers' आपको ऐसा करने देगा।

तो, आप इस्तेमाल कर सकते हैं:

RequestHeader unset Cookie 

यह अनुरोध से सभी कुकीज़ हटेगा। मुझे यकीन नहीं है कि इस तकनीक का उपयोग करके केवल एक विशेष कुकी को निकालना संभव है।

वैकल्पिक रूप से, आप का उपयोग कर कुकीज़ वापस ग्राहक के लिए पारित किया जा रहा रोक सकता है:

Header unset Set-Cookie 

है कि अगर और अधिक उपयुक्त है।

+0

यह आधुनिक साथ कुकी सेट करने के लिए संभव है का उपयोग कर mod_rewrite का उपयोग कर कुकीज़ पुनर्लेखन कर सकते हैं (स्थैतिक सामग्री की सेवा के लिए अच्छा) \ _rewrite। लेकिन जहां तक ​​मैं केवल ग्राहक के जवाब के लिए जानता हूं। – Gumbo

+0

कॉपी/पेस्ट एफटीडब्ल्यू। –

7

आप Apache रिवर्स प्रॉक्सी विन्यास में निम्नलिखित बयानों का उपयोग कर विशिष्ट कुकी प्रबंधित कर सकते हैं:

किसी भी विशिष्ट कुकी आप उपयोग कर सकते हैं निकालने के लिए:
'' हैडर "ANY_COOKIE = जोड़ने सेट-कुकी '; समाप्त हो रहा है =' SOME_DATE_IN_PAST ' ; अधिकतम उम्र = 0; पथ = COOKIE_PATH " '

अतीत तिथि नहीं निर्धारित करके, आप ब्राउज़र है कि कुकी समाप्त हो गया है और ब्राउज़र कुकी को छोड़ दिया जाएगा बताओ।

किसी भी कुकी आप उपयोग कर सकते हैं जोड़ने के लिए:
'हैडर जोड़ने सेट-कुकी "ANY_COOKIE =' ANY_VALUE; SOME_FUTURE_DATE '= समाप्त हो रहा है' '; पथ = COOKIE_PATH"'

सुनिश्चित करें कि आप कुछ निर्दिष्ट बनें भविष्य की तारीख। यदि आप किसी भी तारीख को निर्दिष्ट नहीं करते हैं, तो कुकी को सत्र कुकी के रूप में माना जाएगा।

अनुरोध से विशिष्ट कुकी को हटाने के लिए निम्नलिखित का उपयोग कर प्रयास करें:

'RequestHeader कुकी जोड़ें "ANY_COOKIE =' '; समाप्त हो रहा है =' SOME_PAST_DATE '; पथ = COOKIE_PATH"'

+1

अनुरोध से विशिष्ट कुकी को निकालने के लिए निम्न का उपयोग करने का प्रयास करें: ** 'RequestHeader कुकी जोड़ें "ANY_COOKIE =' '; समाप्ति =' SOME_PAST_DATE '; पथ = COOKIE_PATH"' ** –

+0

मुझे लगता है कि अनुरोध हैडर जोड़ने कुकी वास्तव में आपके लिए 3 कुकीज़ बनायेगी । (ANY_COOKIE, कालबाह्य और पथ) जो शायद आप नहीं चाहते हैं। –

6
अपाचे> 2.2 के साथ

।4, you could have used:

RequestHeader edit Cookie "^(.*?)ANY_COOKIE=.*?;(.*)$" $1$2 
+4

यह: 'RequestHeader कुकी संपादित करें "^ (। *?) Ssosession =। *? (?: $ |;) (। *) $" $ 1 $ 2' काम करता है भले ही हेडर ';' के साथ समाप्त न हो। – Simon

+0

'RequestHeader कुकी संपादित करें ANY_COOKIE = [^;] *? ($ |;)" "'भी काम करना चाहिए: इस तरह आपको उपसर्ग/पोस्टफिक्स भागों को कैप्चर करने और उन्हें वापस रखने की आवश्यकता नहीं है। – Coke

0

मैं सेट नहीं करने के लिए इस का उपयोग सभी कुकीज़

Header unset Cookie 
Header unset Set-Cookie