Je dispose d'un site Web ASP.NET (MVC) qui diffuse du contenu statique (images) ainsi que du contenu dynamique provenant du même domaine. Le site utilise des formulaires auth et dispose d'un contrôleur de connexion. Il y a eu des problèmes très étranges/irréguliers avec des personnes qui se sont déconnectées ou déconnectées à des intervalles aléatoires, et nous avons suivi un problème avec un reverse proxy en cache un fichier image qui a un en-tête de réponse set-cookie cookie auth. Une fois que cela est mis en cache, tout le monde obtient le même cookie d'authentification, ce qui conduit à des résultats très étranges.Pourquoi ASP.NET forme-t-il des cookies de configuration d'authentification sur une demande d'image statique?
Ma question est - comment diable une image aurait-elle un en-tête set-cookie en premier lieu? Que fait le module d'authentification des formulaires ASP.NET pour provoquer cela - il définit sûrement le cookie sur la réponse du contenu HTML principal. J'obtiens que le cookie d'authentification est alors envoyé avec toutes les demandes ultérieures au domaine, mais je ne peux pas comprendre comment le cookie est placé en premier lieu.
(BTW ce problème peut également être le coupable dans au moins deux grands sites de commerce électronique existants qui souffrent de problèmes similaires, sans solution, il serait donc un bon à résoudre).
La réponse est indiquée ci-dessous (tirée 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
Mise à jour: informations complémentaires - nous utilisons IIS 7.5 sur Win2008 R2, 64bit, et l'application est en cours d'exécution sous un pool d'application qui utilise le pipeline intégré/.net 4.
Mise à jour 2: Je ne cherche pas de solution au problème, nous en avons déjà un. Je cherche une réponse à la question, c'est pourquoi c'est arrivé en premier lieu? Merci de ne pas me parler des sous-domaines ou du fonctionnement des cookies!
Mise à jour 3: ajouter à la demande:
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, question très intéressante. @Hugo, as-tu pu reproduire ce comportement ou est-ce aléatoire? –
@Hugo, appliquez-vous SSL sur votre site parce que je remarque que ce cookie est défini sans le drapeau 'secure'? –
Darin, oui nous appliquons SSL - tout le site fonctionne sous SSL, bien que le point de terminaison soit le proxy inverse (IIS avec ARR installé) pas les serveurs web eux-mêmes. La solution au problème est de servir les images d'un sous-domaine/site différent, mais comme vous le faites remarquer à juste titre ci-dessous, cela ne répond pas à la question, qui est comment/pourquoi cela est arrivé en premier lieu. –