2009-11-25 13 views
13

Necesito eliminar una cookie de la solicitud HTTP que llega al servidor. Hacerlo en el cliente (que escribe esta cookie) o en el servidor (que lo lee) no es una opción. Tengo Apache 2.0 que proxies solicitudes entre el cliente y el servidor, así que esperaba eliminar la cookie allí en Apache usando mod_rewrite.Cómo eliminar una cookie en Apache

Mi pregunta es, ¿hay alguna manera de eliminar una cierta cookie de la solicitud HTTP usando mod_rewrite?

Si no es posible eliminar sólo uno galletas entonces como último recurso para eliminar todos los cookies de la solicitud?

Estoy abierto a otras sugerencias de cómo lograr esto si mod_rewrite no es la herramienta adecuada para esta tarea.

+3

puede volver a escribir las cookies usando mod_rewrite usando la bandera CO –

Respuesta

19

Apache mod_rewrite permite la manipulación de URL pero no de encabezados HTTP, sin embargo, 'mod_headers' le permitirá hacerlo.

Por lo tanto, se puede utilizar:

RequestHeader unset Cookie 

Esto se tira todas las cookies de la solicitud. No estoy seguro de si es posible eliminar solo una cookie en particular usando esta técnica.

Alternativamente, puede detener las cookies que se pasa de nuevo al cliente usando:

Header unset Set-Cookie 

si eso es más apropiado.

+0

Es posible ajustar las galletas con el mod \_volver a escribir. Pero por lo que sé solo por la respuesta al cliente. – Gumbo

+0

Copiar/Pegar FTW. –

7

Puede administrar las cookies específicas utilizando siguientes declaraciones en Apache configuraciones de proxy inverso:

Para eliminar cualquier cookie específica que puede utilizar:
'Cabecera añadir Set-Cookie "ANY_COOKIE = ''; expires = 'SOME_DATE_IN_PAST' ; Max-Age = 0; Path = COOKIE_PATH " '

Al especificar una fecha anterior, le dice al navegador que la cookie ha expirado y el navegador la descartará.

Para añadir ninguna cookie de que puede utilizar:
'Cabecera añadir Set-Cookie "ANY_COOKIE = 'ANY_VALUE'; expira = 'SOME_FUTURE_DATE'; Path = COOKIE_PATH"'

Asegúrese de que especifica el alguna fecha futura. Si no especifica ninguna fecha, la cookie se tratará como una cookie de sesión.

Trate de usar lo siguiente para quitar cookie específica de solicitud:

'RequestHeader añadir Cookie "ANY_COOKIE = ''; expira = 'SOME_PAST_DATE'; Path = COOKIE_PATH"'

+1

Intente utilizar lo siguiente para eliminar cookies específicas de la solicitud: ** 'RequestHeader add Cookie "ANY_COOKIE =' '; expires =' SOME_PAST_DATE '; Path = COOKIE_PATH"' ** –

+0

Creo que RequestHeader add Cookie creará 3 cookies para usted . (ANY_COOKIE, caducado y ruta) que pueden no ser lo que quieres. –

6

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

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

Esto: 'RequestHeader edit Cookie"^(. *?) Ssosession =. *? (?: $ |;) (. *) $ "$ 1 $ 2' funciona incluso si el encabezado no termina con un'; '. – Simon

+0

'La cookie de edición de RequestHeader ANY_COOKIE = [^;] *? ($ |;)" "' También debería funcionar: de esta manera no tiene que capturar las partes de prefijo/postfijo y volver a colocarlas. – Coke

0

Lo utilizo para desarmar todas las cookies (bueno para servir contenido estático)

Header unset Cookie 
Header unset Set-Cookie 
Cuestiones relacionadas