У меня возникают проблемы с сессией при открытии начальной закладки (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).
Любые идеи? Кто-нибудь еще видел эту проблему или подобное?