2010-01-28 7 views
8

me ha pedido para construir una sección con pestañas en las páginas que tienen direcciones URL REST sin una barra diagonal (.NET MVC), por ejemplo http://myhost/books/the-amber-spyglassruta de cookies REST falla en IE sin barra final

Para las secciones con pestañas sean un poco más amigable para el usuario Quiero que recuerden qué pestaña estaba abierta en cada página a medida que el usuario se mueve, de modo que si vuelven a un libro que estaban previamente en la misma pestaña permanece abierto. Esto se logra configurando una cookie llamada "tab" con el valor establecido en el tabid y la ruta configurados en la página en la que se encuentran (de modo que no afecta las pestañas de otras páginas). Hasta ahora, es algo bastante básico que pensarías, y funciona muy bien también.

Ingrese Internet Explorer.

En IE resulta que una cookie con ruta/libros/the-amber-spyglass NO coincidirá con la URL anterior y, por lo tanto, no se configurará correctamente. Si agrego una barra inclinada para que la ruta sea/books/the-amber-spyglass/en su lugar funciona bien, pero no puedo cambiar nuestro esquema de URL, e incluso si pudiera "the-amber-spyglass" es un recurso, NO un carpeta.

¿Alguien tiene una solución recomendada para este problema, seguramente muy común?

Muchas gracias de antemano,

JS

Respuesta

8

Ver http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

Debido a un error desconocido en el subyacente WinINET InternetGetCookie aplicación, document.cookie de IE no devolverá una galleta si se configuró con un atributo de ruta que contiene un nombre de archivo .

Por ejemplo, si una página establece una cookie sobre sí mismo de esta manera:

Set-Cookie: HTTPSet-PathCookie = PASS; path =/check.htm

... la cookie se enviará con HTTP solicitudes pero no aparecerán en la colección document.cookie .

+0

Gracias por aclarar eso, desde entonces he implementado una solución diferente donde el nombre de la cookie se genera en base a la URL en su lugar. Esto está lejos de ser ideal, ya que comenzará a sobrescribir las cookies después de que se haya hecho clic en cierta cantidad de pestañas (20 en IE, creo). –

+0

Acabo de hacer una prueba y después de hacer clic en 52 pestañas, todas las cookies siguen presentes de acuerdo con la herramienta de "información de cookies" en IE devtools. Eso no es lo que esperaba, ya que he visto en varios lugares que IE almacenará un máximo de 20 cookies por dominio (50 para Firefox). ¿Que está pasando aqui? –

+2

El límite de cookies por dominio se cambió a 50 en todas las versiones de IE en agosto de 2007. http://blogs.msdn.com/ie/archive/2007/08/29/update-to-internet-explorer-s- cookie-jar.aspx – EricLaw