2009-11-25 16 views
13

Potrzebuję usunąć plik cookie z żądania HTTP, które dostaje się do serwera. Robienie tego na kliencie (który zapisuje to ciasteczko) lub na serwerze (który czyta to) nie jest opcją. Mam Apache 2.0, który przesyła żądania między klientem a serwerem, więc miałem nadzieję, że usuniemy plik cookie bezpośrednio w Apache przy użyciu mod_rewrite.Jak usunąć plik cookie w Apache

Moje pytanie brzmi: czy istnieje sposób usunięcia określonego pliku cookie z żądania HTTP za pomocą mod_rewrite?

Jeśli nie można usunąć tylko jeden ciasteczko następnie w ostateczności do usunięcia wszystkie ciastka z wnioskiem?

Jestem otwarty na inne sugestie, jak to zrobić, jeśli mod_rewrite nie jest odpowiednim narzędziem do tego zadania.

+3

można przepisać ciasteczka użyciu mod_rewrite z flagą CO –

Odpowiedz

19

Apache mod_rewrite umożliwia manipulowanie adresami URL, ale nie nagłówkami HTTP, jednak pozwala to zrobić 'mod_headers'.

Tak, można użyć:

RequestHeader unset Cookie 

To będzie rozebrać wszystkie ciasteczka z żądania. Nie jestem pewien, czy możliwe jest usunięcie danego pliku cookie przy użyciu tej techniki.

Alternatywnie, można zatrzymać cookie są przekazywane z powrotem do klienta przy użyciu:

Header unset Set-Cookie 

jeśli jest to bardziej odpowiednie.

+0

Możliwe jest ustawienie ciasteczka z mod \_przepisać. Ale o ile wiem tylko o odpowiedź na klienta. – Gumbo

+0

Kopiuj/Wklej FTW. –

7

Można zarządzać konkretne cookie stosując następujące oświadczenia w Apache konfiguracji proxy wstecznych:

Aby usunąć konkretny plik cookie można użyć:
'Header dodać Set-Cookie „ANY_COOKIE = ''; wygasa = 'SOME_DATE_IN_PAST' ; Max-Wiek = 0; Ścieżka = COOKIE_PATH ""

Podając datę wcześniejszą, informujesz przeglądarkę, że plik cookie wygasł, a przeglądarka odrzuci plik cookie.

Aby dodać dowolny plik cookie można użyć:
'żniwna dodać Set-Cookie "ANY_COOKIE = 'ANY_VALUE'; wygasa = 'SOME_FUTURE_DATE'; path = COOKIE_PATH"'

mieć pewność, że należy określić niektóre przyszła data. Jeśli nie podasz żadnej daty, plik cookie zostanie potraktowany jako plik cookie sesji.

Spróbuj użyć następujących czynności, aby usunąć konkretny plik cookie z życzenie:

'RequestHeader dodać Cookie "ANY_COOKIE = ''; wygasa = 'SOME_PAST_DATE'; Path = COOKIE_PATH"'

+1

Spróbuj użyć następującego polecenia, aby usunąć określony plik cookie z żądania: ** "RequestHeader dodaj plik cookie" ANY_COOKIE = "", wygasa = "SOME_PAST_DATE"; ścieżka = COOKIE_PATH "" ** –

+0

Myślę, że aplikacja RequestHeader dodaje plik Cookie w rzeczywistości tworzy 3 pliki cookie dla Ciebie . (ANY_COOKIE, wygasł i ścieżka), co może nie być tym, czego potrzebujesz. –

6

z Apache> 2.2 .4, you could have used:

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

To: 'edytuj Cookie RequestHeader '^ (. *?) Ssosession =. *? (?: $ |;) (. *) $" $ 1 $ 2 "działa nawet, jeśli nagłówek nie kończy się na'; '. – Simon

+0

'Cookie do edycji RequestHeader ANY_COOKIE = [^;] *? ($ |;)" "' Powinno również działać: w ten sposób nie musisz przechwytywać części przedrostka/postfiksu i odkładać je. – Coke

0

Używam tego do Usuń wszystkie ciasteczka (dobrze służyć statyczny)

Header unset Cookie 
Header unset Set-Cookie 
Powiązane problemy