Пользовательский агент IE10 заставляет ASP.Net не отправлять обратно Set-Cookie (IE10 не устанавливает куки) - PullRequest
91 голосов
/ 08 августа 2011

Резюме

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 опубликовал исходный ответ с обходным решением, nullptr подтвердил, что теперь есть исправление для этого .

http://support.microsoft.com/kb/2600088

Я добавил исправление к основному вопросу, так как оно удобнее для использования в будущем, но, пожалуйста, проголосуйте за упомянутых пользователей.

Ответы [ 6 ]

71 голосов
/ 20 марта 2013

Проблема заключается в том, что некоторые экземпляры IIS считают, что IE10 - это браузер без файлов cookie (т.е. не может поддерживать файлы cookie). В нашем проблемном случае сервер устанавливал куки-файл аутентификации и отправлял его обратно в браузер, но затем игнорировал куки-файл при последующих запросах.

Решение состоит в том, чтобы либо пропатчить возможности браузера, чтобы он знал, что IE10 может делать куки (об этом рассказано в другом ответе на этой странице), либо изменить поведение по умолчанию, чтобы заставить его использовать куки, даже если он считает, что браузер не может делать куки.

Мы только что добавили следующее в наш раздел форм в web.config:

Cookieless = "UseCookies"

<authentication mode="Forms">
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
66 голосов
/ 08 августа 2011

Найдена эта запись в 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>
33 голосов
/ 15 сентября 2011

Для этого выпуска доступно исправление [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

3 голосов
/ 20 марта 2013

Спасибо за помощь. Сработало №

  1. Я скопировал файл с сайта до C:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Выполнить в командной строке C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Перезагрузите IIS.

  4. Протестировал сайт и он работает без ошибок.

Еще раз спасибо за обратную связь

2 голосов
/ 29 мая 2013

Обновление для ответа nullptr.

Сегодня я пытался загрузить Microsoft KB2600088.Получив ссылку по электронной почте, я нажал на нее, после чего она открыла мне страницу, которая говорит, что она больше не доступна.

Попробуйте: http://support.microsoft.com/kb/2600217

Эта ссылка заменяетKB2600088 и KB2628838.

MIcrosoft .Net Framework 4.5 также доступна.

0 голосов
/ 23 января 2014

Установлены различные патчи, о которых все упоминают, и по какой-либо причине проблема не была решена.

Установлен .NET Framework 4.5 Full и проблема исчезла.

Вам не нужнообновить любые проекты до цели 4.5.Просто установите его на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...