IE11 не отправляет cookie сеанса при нажатии ссылки, ориентированной на новую вкладку (по первому запросу)

У меня возникают проблемы с сессией при открытии начальной закладки (target _blank) из IE11.

Когда я закрываю все экземпляры IE11, а затем открываю новый браузер и перебираюсь на тестовую веб-страницу (default.aspx), страница хранит значение в сеансе и отображает идентификатор сеанса на странице. Если обновить страницу, идентификатор сеанса останется прежним. На странице есть ссылка на себя (default.aspx) с целью _blank. Если я нажму на эту ссылку, откроется новая вкладка, но идентификатор сеанса отличается. Если я обновляю исходное окно, идентификатор сеанса теперь будет соответствовать новому окну.

<%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<% Session["StoredValue"]="Test"; %>

<div>SessionID: <%=Session.SessionID%></div>

<a href="/default.aspx" target="_blank">New Window</a>
<a href="#" onclick="location.href='http://www.google.com'; return false;" target="_blank">3rd Party Window</a>

</body>
</html>

Похоже, эта проблема возникает только для первого окна в том же домене, открывшемся на новой вкладке (я проверил проблему как с target = "_ blank", так и с помощью CTRL при нажатии ссылки).

  • Когда я смотрю трафик печенья с Fiddler, я вижу, что session cookie отправляется обычно в исходном запросе из default.aspx. Когда я нажимаю ссылку, чтобы открыть страницу на новой вкладке cookie сеанса не отправляется в заголовках запроса.
  • Если я перезапущу браузер, перейдите на тестовую страницу, откройте новую вкладку вручную и вставить ссылку, в которую отправляется куки файл правильно в заголовках запроса и сеансе с новой вкладки соответствует исходной вкладке, как ожидалось.
  • Если я перезапущу браузер, перейдите на тестовую страницу, откройте Google с ссылку на таргетинг _blank на тестовой странице, а затем нажмите ссылку открывая тестовую страницу на новой вкладке, cookie также отправляется правильно в заголовках запроса и сеансе из нового окна соответствует оригинальное окно, как ожидалось.

Я считаю, что это проблема на стороне клиента, но сайт работает от Windows Server Standard 2008 R2 с пакетом обновления 1 (SP1) на 4.0 интегрированном веб-сайте с установленным .NET 4.51 (также с установленным только 4.5).

Клиент является 64-разрядной версией Windows 7 (11.0.9600.16476). Я проверил проблему на других машинах под управлением Windows 7 из IE11 и подтвердил, что это не проблема в IE10 из Windows 8 в настольном режиме. Все работает как в Chrome, так и в Firefox.

Я подтвердил, что проблема сохраняется, даже если я:

  • Перемещение безопасности с среднего уровня на средний
  • Отключить защищенный режим
  • Изменить конфиденциальность, чтобы принять все файлы cookie
  • Добавьте сайт в список веб-сайта локальной интрасети или списка доверенных сайтов
  • Установите в политике конфиденциальности конфиденциальную политику P3P в заголовках ответов, в которой говорится, что информация не собирается или не используется.
  • Задайте компактную политику конфиденциальности P3P в заголовках ответов, которые обычно принимаются, чтобы разрешить сторонние файлы cookie в iframe в прошлых версиях IE.
  • Измените параметры состояния сеанса ASP.NET на cookieeless = "UseCookies" или "false" или вообще удалите атрибут (государственный сервер ASP.NET).

Любые идеи? Кто-нибудь еще видел эту проблему или подобное?

Ответы

Ответ 1

Это активный баг в соответствии с Microsoft. По-видимому, нет никакого способа устранения этой проблемы на стороне сервера.

Ссылка на отчет об ошибке

Ответ 2

Не решение, а подсказка: Мы заметили подобное поведение и отследили его до запросов root/browserconfig.xml, в результате чего пользователь стал не прошедшим проверку подлинности. Сервер отправил новый сеансовый файл cookie, поскольку Windows не отправляла существующий файл. Последующие запросы затем отправили новое значение cookie сеанса. Мы изменили наш сервер, чтобы искать этот запрос, а не устанавливать файлы ответов.

Ответ 3

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

Перейти к инструментам = > Параметры Интернета = > Конфиденциальность Нажмите кнопку "Сайты". Там добавьте mydomain.com и нажмите кнопку "Разрешить". Перезагрузите браузер.