Chrome и IE не отправляют ASP.NET_SessionID - т.е. переменная сеанса теряется?

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

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

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

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

Затем FF получает три изображения с одним и тем же файлом cookie, и все в порядке.

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

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

Спасибо,

Игорь


person igorludi    schedule 01.09.2011    source источник
comment
Вы используете IFrame? У меня была недавняя проблема, похожая на эту, но она проявилась только в IE и Chrome, когда был задействован IFrame.   -  person Jonathan Bates    schedule 01.09.2011
comment
Нет, это в значительной степени тег body с тремя тегами img.   -  person igorludi    schedule 02.09.2011


Ответы (1)


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

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

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

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

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

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

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

person igorludi    schedule 02.09.2011