2009-11-25 66 views
13

我需要從獲取到服務器的HTTP請求中刪除cookie。在客戶端(寫入此cookie)或在服務器上(讀取它)執行此操作不是一種選擇。我有Apache 2.0代理客戶端和服務器之間的請求,所以我希望能夠使用mod_rewrite在Apache中刪除cookie。如何刪除Apache中的cookie

我的問題是,有沒有辦法使用mod_rewrite從HTTP請求中刪除某個cookie?

如果不能去除只是一個 Cookie,則作爲最後的手段,以從請求刪除所有餅乾?

如果mod_rewrite不是這個任務的正確工具,我願意接受其他建議。

+3

您可以使用mod_rewrite使用CO標誌 – 2012-02-13 05:38:03

回答

19

Apache mod_rewrite允許操縱URL而不是HTTP標頭,但'mod_headers'會讓你這樣做。

所以,你可以使用:

RequestHeader unset Cookie 

這會從請求剝離所有餅乾。我不確定是否可以使用此技術刪除特定的Cookie。

或者,您可以停止使用被傳遞的cookie返回給客戶端:

Header unset Set-Cookie 

,如果這是更合適的。

+0

它可以設置與國防部餅乾改寫餅乾\_改寫。但據我所知只是對客戶的迴應。 – Gumbo 2009-11-26 16:31:22

+0

複製/粘貼FTW。 – 2010-11-06 23:35:33

7

您可使用Apache的反向代理配置,下面的語句管理特定的Cookie:

要刪除您可以使用任何特定的cookie:
頭添加設置Cookie「ANY_COOKIE =‘’;到期=‘SOME_DATE_IN_PAST’ ; Max-Age = 0; Path = COOKIE_PATH「'

通過指定過去的日期,告訴瀏覽器cookie已過期,瀏覽器將放棄cookie。

要增加你可以使用任何的cookie:
'頭添加設置Cookie 「ANY_COOKIE = 'ANY_VALUE';到期= 'SOME_FUTURE_DATE';路徑= COOKIE_PATH」'

確保您指定的一些未來日期。如果您未指定任何日期,則該Cookie將被視爲會話Cookie。

嘗試使用以下以從請求刪除特定的Cookie:

'RequestHeader添加曲奇 「ANY_COOKIE = '';到期= 'SOME_PAST_DATE';路徑= COOKIE_PATH」'

+1

嘗試使用以下命令從請求中刪除特定的Cookie:**'RequestHeader add Cookie'ANY_COOKIE =''; expires ='SOME_PAST_DATE'; Path = COOKIE_PATH''** – 2011-07-15 10:31:47

+0

我認爲RequestHeader添加Cookie實際上會爲您創建3個Cookie 。 (ANY_COOKIE,過期和路徑),這可能不是你想要的。 – 2016-05-31 14:03:42

6

與Apache> 2.2 。4,you could have used

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

This:'RequestHeader edit Cookie「^(。*?)ssosession =。*?(?:$ |;)(。*)$」$ 1 $ 2「即使頭文件不以';'結尾也可以工作。 – Simon 2014-05-22 15:13:41

+0

'RequestHeader edit cookie ANY_COOKIE = [^;] *?($ |;)「」'也應該可以工作:這樣您就不必捕獲前綴/後綴部分並將它們放回去。 – Coke 2018-02-05 21:44:25

0

我使用它來取消設置所有Cookie(好提供靜態內容)

Header unset Cookie 
Header unset Set-Cookie