У меня есть веб-сайт ASP.NET(MVC), который обслуживает статический контент (изображения), а также динамический контент из того же домена. Сайт использует формы auth и имеет контроллер входа. Там были некоторые очень странные/нерегулярные проблемы с людьми, которые сами вошли в систему или из них случайным образом, и мы отследили ее до проблемы с обратным прокси-кешированием файла образа с заголовком ответа set-cookie, который устанавливает auth cookie. Как только это кэшируется, каждый получает тот же файл cookie, что приводит к очень странным результатам.
Мой вопрос: как на самом деле, если бы изображение получило заголовок set-cookie? Что делает модуль проверки подлинности форм ASP.NET, чтобы сделать это - наверняка он устанавливает cookie в основном ответе на контент HTML. Я получаю, что файл cookie auth затем отправляется со всеми последующими запросами в домен, но я не могу понять, как настроен файл cookie.
(Кстати, эта проблема также может быть виновником, по крайней мере, двух существующих крупных сайтов электронной коммерции, которые страдают от подобных проблем, без решения, поэтому было бы хорошо решить).
Ответ показан ниже (взято из скрипача).
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
Обновление: дополнительная информация - мы используем IIS 7.5 на Win2008 R2, 64bit, и приложение работает под пулом приложений, который использует интегрированный конвейер /.net 4.
Обновление 2: я не ищу решение проблемы, у нас уже есть. Я ищу ответ на вопрос, и почему это произошло в первую очередь? Пожалуйста, не отвечайте на вопрос о субдоменах или о том, как работают cookie!
Обновление 3: добавление запроса:
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;