У меня есть приложение, созданное с использованием ASP.NET MVC 3.0. Он использует встроенную проверку подлинности форм asp.net без состояния сеанса и файлы cookie в браузере для идентификации пользователя, делающего запросы.
Теперь, когда я тестирую приложение с использованием IE9, типичный HTML-запрос отправляет этот пользовательский агент в заголовок, и все работает нормально.
Пользователь-агент: Mozilla / 5.0 (совместимый; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)
Однако в приложении есть одна страница с контейнером ActiveX, в котором размещается Microsoft Word в браузере. Цель этого контейнера ActiveX состоит в том, чтобы позволить вам вносить изменения в текстовый документ; нажмите кнопку, чтобы отправить этот текстовый документ вместе с изменениями на нашем сервере, чтобы его можно было сохранить.
В элементе управления ActiveX - компоненте Office Viewer с веб-сайта www.ocxt.com имеется метод HttpPost (), который отправляет содержимое просматриваемого документа на сервер.
Когда вы вызываете HttpPost (), он правильно отправляет все те же куки, но использует другую строку User-Agent.
User-Agent: Mozilla / 4.0 (совместимый; MSIE 5.5; Windows NT 4.0)
Агент UserAgent, использующий строку MSIE 5.5, по-видимому, заставляет ASP.NET или MVC не отправлять запрос соответствующему контроллеру, а вместо этого отправляет ответ о перенаправлении на страницу входа в систему, даже если файл cookie является правильным для сеанса. Я провел тест с Fiddler и попытался использовать MSIE 6.0, 7.0, 8.0, и они, кажется, работают нормально, поэтому, в частности, 5.5 вызывает перенаправление части стека сервера на страницу входа.
Раньше эта страница работала нормально, поэтому я не уверен, что что-то изменилось в последних версиях ASP.NET/MVC, или это потому, что я перешел на IE9.0, но в основном я бы хотелось бы узнать, можно ли сказать ASP.NET, чтобы он не учитывал User-Agent при определении того, был ли сеанс уже аутентифицирован или нет.
Спасибо.