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