2011-07-26 21 views
8

En mi aplicación de primavera intento establecer una cookie y luego redirigir a una página donde se lee la cookie. La redirección a otra página web funciona, pero la configuración de las cookies falla solo en IE9.IE 9 configurar cookie y redirigir falla

Cookie cookie = MyCookieHandler.createCookie(parameters, domain); 
response.addCookie(cookie); 

La redirección se maneja compra estableciendo el ModelAndView

modelView = new ModelAndView("redirect:" + getCallback()); 

Como dije funciona bien en FF3 +, Chrome y IE7/IE8. ¿Qué mal en mi aplicación? ¿Alguna sugerencia?

+1

capturar sus cabeceras HTTP de respuesta de 302 usando violinista y colocarlas aquí. – EricLaw

+0

y ¿qué hace tu método createCookie? –

+0

'HTTP/1.0 302 trasladó temporalmente Fecha: Miér 27 Jul 2011 09:27:12 GMT Ubicación: /login/index.html Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 20 Content-Type: text/html; charset = ISO-8859-15 X-Cache: MISS de ham-dmz-mns1.mobilcom.de X-Cache-Lookup: MISS de ham-dmz-mns1.myserver.de:8080 A través de: 1.0 ham-dmz -mns1.myserver.de:8080 (squid/2.7.STABLE5) Conexión: keep-alive Proxy-Connection: keep-alive' – Nils

Respuesta

3

Después de algunos intentos he añadido lo siguiente:

response.addHeader("Pragma", "no-cache"); 
response.addHeader("Cache-Control", "no-cache"); 

Ahora funciona para mí , no sé si esta es la solución correcta y no sé por qué el almacenamiento en caché es diferente en IE9 pero ahora funciona ... gracias chicos.

+0

Ya tuve esto en mi respuesta y todavía no funcionó? – buddyp450

2

Tuve el problema de una redirección fallida antes. Curiosamente, parecía funcionar en Firefox, pero falló en IE. La solución fue añadir una URL completa a la declaración de redirección, es decir

http://foo.com/new_site.html 

en lugar de

new_site.html 
+0

mi redirectURL es como http://yyy.google.com – Nils

+0

Intenta agregar http: // frente a él, entonces. Esto parece ser un problema de configuración de seguridad de IE. – Raku

+0

oh, lo siento, fue 'http: // yyy.google.com' (fue ignorado por el cuadro de comentarios) e incluso si la devolución de llamada se establece sin http (s), mi aplicación agrega esto. – Nils

5

Tuve problemas similares con IE 8, 9 y 10 y los encabezados de control de caché no me ayudaron. Después de más investigaciones, tuve que poner un P3P privacy policy (de una aplicación web Java anterior) en su lugar e IE almacenó la cookie correctamente sin los encabezados de control de caché.

En la actualidad, Internet Explorer solo honra este formato de política, pero proporciona el único medio confiable de administrar cookies sin cambios manuales en la configuración de privacidad de IE. Hay dos partes en una política de privacidad de P3P: archivo de política y encabezado de política compacta. El encabezado de política compacta parece funcionar bastante bien. Las diferentes categorías de P3P tienen códigos compactos para la brevedad en el encabezado, p. navegación => NAV. Como mínimo, comenzaría con los códigos INT, NAV y UNI para la política compacta.

Éstos son dos ejemplos de cómo pasar de nuevo a la cabecera:

Grails/Java: 
    response.setHeader("P3P", "CP='INT NAV UNI'"); 

PHP: 
    header('P3P:CP="INT NAV UNI"') 
+0

Confirmando. Este encabezado P3P específico resolvió el problema de "cookie no configurada en POST redirect" con IE11 (Edge) para mí. Nada más fue cambiado. Cuando este método comience a fallar, vuelva a la actualización/redirección basada en etiquetas META: http://webmaster.iu.edu/tools-and-guides/maintenance/redirect-meta-refresh.phtml – ddotsenko

Cuestiones relacionadas