Пользовательский агент 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. Просто установите его на сервер.