Tengo un sitio web ASP.NET (MVC) que sirve contenido estático (imágenes), así como contenido dinámico del mismo dominio. El sitio usa formularios auth y tiene un controlador de inicio de sesión. Ha habido algunos problemas muy extraños/irregulares con las personas que se encuentran conectadas o desconectadas a intervalos aleatorios, y hemos rastreado a un problema con un caché de proxy inverso un archivo de imagen que tiene un encabezado de respuesta de conjunto de cookies que establece el cookie de autenticación Una vez que se almacena en caché, todos obtienen la misma cookie de autenticación, lo que genera resultados muy extraños.¿Por qué ASP.NET forma las cookies de configuración de autenticación en una solicitud de imagen estática?
Mi pregunta es: ¿cómo diablos una imagen obtendría un encabezado de conjunto de cookies en primer lugar? ¿Qué está haciendo el módulo de autenticación de formularios ASP.NET para causar esto? Seguramente establece la cookie en la respuesta principal de contenido HTML. Entiendo que la cookie de autenticación se envía con todas las solicitudes posteriores al dominio, pero no puedo averiguar cómo se establece la cookie en primer lugar.
(Por cierto, este problema también puede ser el culpable en al menos dos grandes sitios de comercio electrónico existentes que están sufriendo problemas similares, sin solución, por lo que sería una buena solución).
La respuesta se muestra a continuación (tomada de fiddler).
HTTP/1.1 200 OK
Cache-Control: public, max-age=86400,max-age=86400
Content-Type: image/png
Last-Modified: Thu, 04 Nov 2010 16:00:52 GMT
Accept-Ranges: bytes
ETag: "0528474397ccb1:0"
Server: Microsoft-IIS/7.5
Set-Cookie: my-auth-cookie=6BC25F1EF71989466A48C0120E7739E; path=/; HttpOnly
Date: Wed, 17 Nov 2010 17:15:08 GMT
Content-Length: 15790
Actualización: Información adicional - estamos utilizando IIS 7.5 en Win2008 R2, de 64 bits, y la aplicación se ejecuta en un grupo de aplicación que está utilizando la canalización integrada/.net 4.
Actualización 2: No estoy buscando una solución al problema, ya tenemos uno. Estoy buscando una respuesta a la pregunta, ¿por qué sucedió en primer lugar? ¡No responda contándome sobre subdominios o cómo funcionan las cookies!
Actualización 3: añadir en la solicitud:
GET https://www.example.com/sprite.png HTTP/1.1
Host: www.example.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: my-auth-cookie=6BC25F1EF71989466A48C0120E7739E;
+1, pregunta muy interesante. @Hugo, ¿fue capaz de reproducir este comportamiento o es aleatorio? –
@Hugo, ¿está aplicando SSL en su sitio porque noté que esta cookie se configuró sin el indicador "secure"? –
Darin, sí, estamos aplicando SSL: todo el sitio se ejecuta bajo SSL, aunque el punto de terminación es el proxy inverso (IIS con ARR instalado), no los servidores web. La solución al problema es servir las imágenes de un subdominio/sitio diferente, pero como usted señala correctamente a continuación no responde la pregunta, que es cómo y por qué sucedió en primer lugar. –