2009-12-18 16 views
5

Tengo un problema extraño con las cookies que se envían y reciben correctamente, pero que son inaccesibles a JavaScript en Internet Explorer. JavaScript de Chrome, Firefox, Opera y Safari está bien.Cookie de subdominio enviada a petición Cabecera de cookie, pero no está presente en el documento de JavaScript de IE

  1. mensaje a "http://wp.abc.example.com/content/sv2.cgi?id=1234", la respuesta establece las galletas, los problemas de redirección 302:

    HTTP/1.0 302 Moved Temporarily 
    Location: http://members.abc.example.com/abc/members/0912/07/news01.html 
    Set-Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; expires=Tue Feb 16 09:33:03 2010 GMT; path=/abc/members/0912/07/news01.html; domain=abc.example.com; ; 
    Set-Cookie: LEADENDDATE=20091218; expires=Tue Feb 16 09:33:03 2010 GMT; path=/abc/members/0912/07/news01.html; domain=abc.example.com; ; 
    
  2. El navegador solicita la página de destino, incluyendo las cookies sólo se ha enviado.

    GET /abc/members/0912/07/news01.html HTTP/1.1 
    Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; LEADENDDATE=20091218; 
    Host: members.abc.example.com 
    
  3. Ejecutar "javascript: alert (document.cookie);" en la barra de direcciones del navegador.

  4. En IE, e IE solamente, las cookies no están allí. Otros navegadores están bien. Esto es cierto para IE6, 7 y 8.

Así que en resumen,

El "wp.abc.example.com" establece una cookie en "abc.example.com", que es enviado al servidor en solicitudes en "members.abc.example.com", pero no visible para JavaScript en esa página.

¿Por qué?

Pensé que, en lugar de "abc.example.com", la cookie debería configurarse en ".abc.example.com" para permitir la coincidencia de subdominios, pero aun así se envía en "members.abc.example". com "encabezado de solicitud.

Básicamente, actúa como si "HttpOnly" estuviera en la cookie, aunque desde el ejemplo del encabezado Set-Cookie que se muestra arriba, esa bandera no está incluida. ¿El extra ";" tal vez tenga algún efecto?

Respuesta

7

Eric Law escribió a good article on IE's various cookie-handling quirks hace un tiempo. Una de las preguntas que responde aparece como si se aplicara a su escenario:

Q8: ¿Hay algún límite en la propiedad HTML DOM document.cookie?

A: [...]

También, debido a un error desconocido en el subyacente aplicación WinINET InternetGetCookie, document.cookie de IE no devolverá una cookie si se ha establecido con un atributo de ruta que contiene una nombre del archivo.
[...]

Nota que sus caminos hacen incluyen los nombres de archivo:

Set-Cookie: AID = 1495763b4fc6d5f4290e2074ab1092f7; expira = mar 16 feb 09:33:03 2010 GMT; path =/abc/members/0912/07/news01.html; domain = abc.example.com; ;
Set-Cookie: LEADENDDATE = 20091218; expira = mar 16 feb 09:33:03 2010 GMT; path =/abc/members/0912/07/news01.html; domain = abc.example.com; ;

le sugiero que intente configurar las galletas con las trayectorias libres de nombre de archivo, y ver si eso no ayuda ...

+0

Gracias! Eventualmente lo descubrimos por nosotros mismos, pero es agradable ver un escrito sobre él como un error conocido. MSDN es básicamente inútil en la entrega de cookies. ¿Hay alguna documentación de Microsoft sobre este tema que conozcas? – ryandenki

+0

En realidad, en nuestro caso, realmente necesitamos que las cookies sean específicas de la página, no solo de la ruta. Por supuesto, eso es solo una solución horrible para una política extraña que prohíbe el uso de parámetros de consulta en las URL sin los sitios web de nuestra compañía: http://stackoverflow.com/questions/1956641/any-justification-for-a-policy-that- query-parameters-should-not-be-used – ryandenki

Cuestiones relacionadas