Пользовательский агент IE10 заставляет ASP.Net не отправлять обратно Set-Cookie (IE10 не устанавливает куки)
Резюме
ASP.Net не отправляет обратно Set-Cookie
заголовок при использовании IE 10. Это означает, что, например, вы не можете войти на сайт ASP.Net, используя IE10, например, при использовании проверки подлинности с помощью форм.
подробность
В настоящее время мы тестируем одно из наших устаревших веб-приложений для 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 опубликовал исходный ответ с обходным devio подтвердил, что теперь есть исправление для этого.
http://support.microsoft.com/kb/2600088
Я добавил исправление к основному вопросу, так как оно удобнее для дальнейшего использования, но, пожалуйста, проголосуйте за упомянутых пользователей.
6 ответов
Нашел эту запись на 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>
Проблема заключается в том, что некоторые экземпляры IIS считают, что IE10 - это браузер без файлов cookie (т.е. не может поддерживать файлы cookie). В нашем проблемном случае сервер устанавливал куки-файл аутентификации и отправлял его обратно в браузер, но затем игнорировал куки-файл при последующих запросах.
Решением является либо исправление возможностей браузера, чтобы он знал, что IE10 может создавать файлы cookie (об этом рассказано в другом ответе на этой странице), либо изменение поведения по умолчанию, чтобы заставить его использовать файлы cookie, даже если он считает, что браузер не может создавать файлы cookie.
Мы просто добавили следующее в наш раздел форм в web.config:
Cookieless="UseCookies"
<authentication mode="Forms">
<forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
Для этого выпуска доступно исправление [1].
1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (заменяет предыдущий КБ)
Кроме того, [2] предполагает, что это выйдет на Windows Update в январе 2012 года.
Спасибо Вам за помощь. Сработало нет.
Я скопировал файл с сайта в
C:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers
Запустить в командной строке
C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i
Перезагрузите IIS.
Протестировал сайт и все работает без ошибок.
Еще раз спасибо за обратную связь
Обновление для ответа n ullptr.
Я пытался сегодня загрузить Microsoft KB2600088. Получив ссылку по электронной почте, я нажал на нее, после чего появилась страница, на которой написано, что она больше не доступна.
Попробуйте это: http://support.microsoft.com/kb/2600217
Эта ссылка является заменой для KB2600088 и KB2628838.
Microsoft .Net Framework 4.5 также доступна сейчас.
Установлены различные патчи, о которых все упоминают, и по какой-то причине проблема не была решена.
Установил.NET Framework 4.5 Full и проблема ушла.
Вам не нужно обновлять какие-либо проекты до цели 4.5. Просто установите его на сервер.