Chrome и IE не отправляют ASP.NET_SessionID - т.е. переменная сеанса теряется? - PullRequest
1 голос
/ 01 сентября 2011

У меня есть приложение ASP NET MVC 3 со страницей с заданным параметром (скажем, region = 'Север').

Когда это отправляется обратно на сервер, я устанавливаю этот параметр какпеременная сеанса и возвращает три изображения с атрибутом src, установленным на три разных controller/getImageXy URL-адреса.

Теперь эти методы контроллера выполняют запрос (на основе переменной сеанса) и возвращают изображения.Это довольно аккуратно, пользователь получает быстрый ответ, а затем эти изображения заполняются (асинхронно).

Все отлично работает в FF.Первоначальный ответ имеет набор ASP. NET_SessionID (cookie).

FF, затем ПОЛУЧАЕТ три изображения с одним файлом cookie, и все в порядке.

Однако Chrome и IE этого не делают.

Они просто отправляют __RequestVerificationToken_Lw__.Естественно, моя переменная сеанса ("region") теряется.

Спасибо,

Игорь

1 Ответ

1 голос
/ 02 сентября 2011

Чтобы ответить на мой собственный вопрос и, возможно, сэкономить кому-то несколько часов:

Проблема заключалась в том, что я установил атрибут domain в файле cookie идентификатора сеанса.

Почему я это сделал?Я скопировал его из книги «Профессиональный ASP NET MVC 3», стр. 163, намереваясь установить флаг HttpOnly.Цитата:

Вы можете остановить скрипт доступа ко всем куки на вашем сайте, добавив простой флаг: HttpOnly.Вы можете установить это в файле web.config следующим образом:

<httpCookies domain=”String” httpOnlyCookies=”true” requireSSL=”false”/>

Я был наказан за вставку копии без раздумий.Поэтому, когда я изменил это значение на domain="", проблема была исправлена.

Интересно, что FF игнорировал (или неправильно использовал) этот атрибут, но это уже другая тема.

...