IE файлы cookie IE-1, потерянные в iframe

У нас есть сайт (www.example.com), который отправляет пользователей на ряд сторонних страниц, чтобы проверить платежные реквизиты, которые мы делаем в iframe. Первоначально локальная страница с сайта www.example.com загружается в iframe, а пользователь перенаправляется на сторонний URL-адрес. После того, как пользователь выполнит шаги третьей стороны, они перенаправляются обратно на страницу нашего сайта (www.example.com) в пределах iframe.

Это работает во всех проверенных нами браузерах, кроме IE 11, где наши файлы cookie выглядят потерянными. Мы проверили это как в Windows 7, так и в 8.1, как на рабочем столе, так и в режиме "Metro", и проблема во всех версиях.

Когда пользователь просматривает наш сайт, мы устанавливаем cookie сеанса, который правильно отправляется на первую страницу, которая первоначально загружается в iframe. Однако, если пользователь просмотрел некоторые сторонние страницы в этом iframe, cookie сеанса не отправляется со следующим запросом.

Если мы установим настройку конфиденциальности IE 11 на минимальное значение, эта проблема исчезнет, ​​и все будет работать должным образом.

Все потенциальные решения, к которым я пришел, относятся к заголовкам P3P. У нас есть правильный и корректный заголовок P3P и файл политики XML, и эта проблема возникает только в IE 11.


Обновление: У нас есть несколько других файлов cookie, установленных с помощью JS. Все они сохраняются, как ожидалось. Разница заключается в дате истечения срока действия (1 год для файлов cookie JS, 1 месяц для файла cookie сеанса), домена (явно "example.com" для файлов cookie JS, пустого для cookie сеанса) и являются ли они "только HTTP" (false для JS cookie, true для cookie сеанса).

Я попытался установить все эти параметры в соответствии с кукисами JS для файла cookie сеанса, но это не имело значения.


Обновление 2:. После большего тестирования я не смог создать тестовый пример, который воссоздает эту проблему. Любые дополнительные файлы cookie, которые я пытаюсь проверить с помощью живого кода, также кажутся разбитыми, даже если они установлены с точно таким же кодом, что и файлы cookie JS, которые работают. Вкратце; Я еще не нашел шаблонов для файлов cookie, которые работают, и тех, которые этого не делают.

Интересно отметить, что файлы cookie не удаляются, их просто не отправляют на окончательный запрос. Если загружена другая страница, файлы cookie волшебным образом снова появляются и отправляются; что заставляет меня думать, что это ошибка, связанная с iframe и P3P.


Обновление 3 (день 3): IE 11 обработка файлов cookie продолжает меня путать. Чем дальше я путешествуюсь в лабиринт Microsoft, тем больше потерял себя среди своих смещающихся стен. И здесь есть призраки. Фрагменты полупроклятых политик безопасности, которые вплетались в какое-то эфирное существо, которое отслеживает и насмехается над каждым шагом. Сначала я был заморожен, испуган, ошеломлен в едва уловимой форме, бросаясь прямо из поля зрения, но с каждым минутой я получаю больше утешения от простого знания о его близости. Может ли это быть зверь, которого я послал сюда, чтобы встретиться? Как я мог убить моего единственного компаньона в такие времена?

Ответ 1

Мы столкнулись с аналогичной проблемой с Internet Explorer 11, где cookie сеанса пропал после перенаправления по https.

Цепочка запросов выглядела примерно так:

первоначальный запрос / набор cookie сеанса перенаправление на внешний URL перенаправление назад (потеря файлов сеанса)

Наша проблема связана с недопустимым именем хоста в соответствии с RFC952, у нас были символы подчеркивания на нашем URL тестового сервера. Похоже, что Internet Explorer молча отключает cookie сеанса при перенаправлении через https, если URL-адрес не соответствует RFC952. При использовании тире вместо подчеркиваний все работало, как ожидалось.

Исходное решение было найдено в разделе Обновление 2 этого asp.net blogpost с 2004. Связанный Microsoft bug ticket здесь.

Надеюсь, это поможет кому-то.

Ответ 2

Я заметил, что файлы cookie cookie часто теряются, когда режим совместимости IE7 задействован для новой страницы. Я полагаю, что то же самое можно было бы применить к iframe. Является ли iframe отправкой значения заголовка X-UA-Compatible, которое отличается от родительской, или отличается от предыдущего в сеансе? Как, может быть, ваш сеанс начался с IE = edge, а страница iframe устанавливает его в IE = 7. Если это так, IE, похоже, часто запускает новый IE PID для страниц режима совместимости и сессионных файлов cookie (но, похоже, он не передается.

Ответ 3

У меня такая же проблема, что и в этой теме.

Наш сайт помещается в iframe и использует сеанс для cookie (asp.net_session). Во время навигации на сайте нет проблем (файлы cookie работают и прикрепляются к заголовкам запросов). Но когда мы перенаправляем клиента на другой сайт (othersite.com), а другой сайт .com перенаправляет клиента в наш домен и заставляет его открываться как "_top", браузер не отправляет файлы cookie с запросами, чтобы мы потеряли сессию клиентов. Эта проблема возникла только в IE.

Что вы можете посоветовать, чтобы исправить эту проблему.

Ответ 4

Проверьте параметры Интернета в IE11. Инструменты > Свойства обозревателя > Конфиденциальность > Дополнительно

Возможно, вы должны переопределить это и включить "Всегда разрешать файлы cookie сеанса".