Possiedo un sito Web ASP.NET (MVC) che pubblica contenuto statico (immagini) e contenuto dinamico dello stesso dominio. Il sito utilizza auth di moduli e ha un controller di accesso. Ci sono stati alcuni problemi molto strani/irregolari con persone che si ritrovano loggate o disconnesse a intervalli casuali, e abbiamo rintracciato un problema con un proxy inverso che memorizza nella cache un file immagine che ha un'intestazione di risposta set-cookie che imposta il auth cookie. Una volta memorizzato nella cache, tutti ricevono lo stesso cookie di autenticazione, il che porta a risultati molto bizzarri.Perché ASP.NET forma i cookie di impostazione dell'autenticazione su una richiesta di immagine statica?
La mia domanda è: come mai un'immagine otterrà un'intestazione dell'insieme di cookie in primo luogo? Che cosa fa il modulo di autenticazione dei moduli ASP.NET per causare questo - sicuramente imposta il cookie sulla risposta del contenuto HTML principale. Ottengo che il cookie auth viene quindi inviato con tutte le richieste successive al dominio, ma non riesco a capire come viene impostato il cookie in primo luogo.
(A proposito di questo problema potrebbe esserci anche il colpevole di almeno due grandi siti di e-commerce esistenti che soffrono di problemi simili, senza soluzione, quindi sarebbe una buona soluzione).
La risposta è indicata di seguito (tratta dal violinista).
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
Update: informazioni aggiuntive - stiamo usando IIS 7.5 su Win2008 R2, a 64 bit, e l'applicazione è in esecuzione con una piscina app che sta usando la pipeline integrata/.net 4.
Update 2: Non sto cercando una soluzione al problema, ne abbiamo già uno. Sto cercando una risposta alla domanda, che è il motivo per cui è successo in primo luogo? Si prega di non rispondere dicendomi dei sottodomini o di come funzionano i cookie!
Update 3: l'aggiunta nella richiesta:
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, domanda molto interessante. @ Hugo, sei riuscito a riprodurre questo comportamento o è casuale? –
@Hugo, stai rafforzando SSL sul tuo sito perché noto che questo cookie è impostato senza il flag 'secure'? –
Darin, sì stiamo applicando SSL: l'intero sito è in esecuzione in SSL, sebbene il punto di terminazione sia il proxy inverso (IIS con ARR installato) non i server Web stessi. La soluzione al problema è di servire le immagini di un diverso sottodominio/sito, ma come giustamente fai notare di seguito che non risponde alla domanda, che è come/perché è successo in primo luogo. –