Пользовательский агент IE10 заставляет ASP.Net не отправлять обратно Set-Cookie (IE10 не устанавливает файлы cookie)
Резюме
ASP.Net не отправляет обратно заголовок Set-Cookie
при использовании IE 10. Это означает, что вы, например, не можете войти на сайт ASP.Net с использованием IE10 при использовании проверки подлинности с помощью форм.
Detail
В настоящее время мы тестируем одно из наших устаревших веб-приложений против IE 10 [Preview 2].
При попытке входа в систему с использованием проверки подлинности с формами мы не получаем заголовок Set-Cookie
в ответе, если пользовательский агент - это IE 10. Мы пробовали это с пустым .Net 2 и .Net 4 сайт.
Поскольку мы не могли/не поверили, мы даже выполнили следующий HTTP-запрос вручную через telnet
- после использования всех обычных инструментов - и получили тот же ответ.
GET http://test.ourdomain.co.uk/ HTTP/1.1
Accept: */*
Host: test.ourdomain.co.uk
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Content-Length: 0
Вышеуказанный HTTP-запрос возвращает Set-Cookie
в ответе. Но если мы просто изменим User-Agent на Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)
, он будет работать!
Может ли кто-нибудь еще повторить это? Я не могу найти какую-либо известную проблему с cookie IE10, кроме проблемы, которая влияет на нестандартные шаблоны URL.
Исправление
После devio выложили оригинальный ответ, обходным путем nullptr подтвердил, что теперь есть исправление для этого.
http://support.microsoft.com/kb/2600088
Я распространил исправление на главный вопрос, так как он просто полезен для будущих ссылок, но, пожалуйста, произведите голосование упомянутых пользователей.
Ответы
Ответ 1
Нашел эту запись в MS Connect, поведение является признанной ошибкой.
Рекомендуемое временное решение (из записи):
== Обходное решение ==
Тем временем, чтобы заставить его работать и избежать подобных проблем в будущий, я использую файл ~\App_Browsers\BrowserFile.browser с следующее:
<browsers>
<browser refID="Default">
<capabilities><!-- To avoid wrong detections of e.g. IE10 -->
<capability name="cookies" value="true" />
<capability name="ecmascriptversion" value="3.0" />
</capabilities>
</browser>
</browsers>
Ответ 2
Проблема заключается в том, что некоторые экземпляры IIS считают, что IE10 является cookieless браузером (т.е. не поддерживает файлы cookie). В нашем проблемном случае сервер настраивал файл cookie аутентификации и отправлял его обратно в браузер, но затем игнорировал cookie при последующих запросах.
Решение заключается в том, чтобы либо исправлять возможности браузера, чтобы он знал, что IE10 может делать файлы cookie (описанные в другом ответе на этой странице), либо изменять поведение по умолчанию, чтобы заставить его использовать куки, даже если он считает, что браузер не может использовать файлы cookie.
Мы просто добавили следующее в наш раздел форм в web.config:
Cookieless = "UseCookies"
<authentication mode="Forms">
<forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
Ответ 3
Для этой проблемы доступно исправление [1].
1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (заменяет предыдущий КБ)
Кроме того, [2] предполагает, что это повлияет на обновление Windows в январе 2012 года.
2) http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
Ответ 4
Спасибо вам за помощь. Это не работало.
-
Я скопировал файл с сайта
до C:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers
-
Запуск в командной строке C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i
-
Перезапустите IIS.
-
Протестировано и работает без ошибок.
Еще раз спасибо за обратную связь
Ответ 5
Обновление для ответа nullptr.
Я попробовал сегодня загрузить Microsoft KB2600088. Получив ссылку по электронной почте, я щелкнул по ней, после чего привел страницу, в которой говорится, что она больше не доступна.
Попробуйте следующее: http://support.microsoft.com/kb/2600217
Эта ссылка является заменой для KB2600088 и KB2628838.
Теперь доступен и MIcrosoft.Net Framework 4.5.
Ответ 6
Установлены различные патчи, которые все упоминают, и по какой-то причине проблема не была решена.
Установленная .NET Framework 4.5 Полная и проблема исчезла.
Вам не нужно обновлять какие-либо проекты до цели 4.5. Просто установите его на сервер.