Невозможно установить куки в IFRAME в IE, даже с заголовком P3P - PullRequest
6 голосов
/ 20 мая 2011

Я видел здесь много постов о том, как заставить куки работать внутри iframe в IE, и я попробовал несколько решений, но до сих пор не повезло.Вот с чем я имею дело:

  • У меня есть iframe, созданный с помощью Javascript на сайте клиента (виджет). У меня нет контроля над сайтом клиента.Мне нужно установить куки, чтобы пользователь вошел в систему в рамках iframe, и это работает в Chrome и Firefox, но не в IE 7/8.Я не тестировал IE 6, но предполагаю, что у него та же проблема.

  • Я создал политику P3P с помощью редактора политик IBM, и редактор сказал, что компактная политика приемлема приБезопасность IE, независимо от того, установлена ​​она на Низкий, Средний или Высокий.Я использую CP:

P3P: policyref="/w3c/p3p.xml" CP="CAO DSP COR CURa ADMa DEVa PSAa PSDa CONi TELi OUR IND PHY ONL UNI COM NAV INT DEM CNT PRE" (я пробовал несколько других CP, которые, как говорят люди, работают, но не видели разницы в результате.)

  • Веб-сервер (NGINX) обслуживает этот заголовок P3P с каждым файлом.Я не обслуживаю его из кода.

  • Файл p3p.xml существует и соответствует компактной политике.Файл p3p.xml проверяется с использованием валидатора W3C P3P.

  • Даже с заголовком P3P (независимо от того, какой я пробовал), IE дает мне «сглаз» в строке состояния надно и не позволит мне установить куки.В отчете о конфиденциальности они отображаются как заблокированные.

  • Я прочитал сообщение Писквора на SO по этой теме: Cookie заблокирован / не сохранен в IFRAME в Internet Explorer , но у меня естьне смог воспроизвести то, что он смог сделать на своем демонстрационном сайте: http://newmoon.wz.cz/test/page.php?send_p3p=1. Я предполагаю, что это потому, что я получаю дурной глаз, а он нет.Я сделал все, о чём я читал, как рекомендацию, чтобы избавиться от зла, но всё же это сохраняется.Дразня меня.

  • Моя тестовая страница здесь, если вы хотите попробовать ее: http://truelike.com/js/bobs/frametest.php Установленные / прочитанные страницы работают нормально при просмотре за пределами iframe, но нене работает внутри при использовании IE.

  • Для справки, я использую PHP на бэкэнде.

Любая помощь будет высоко ценится - мы впадаем в отчаяние.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Итак, я решил это сам.Похоже, что проблема была в HTTPUserIDModule NGINX (http://wiki.nginx.org/HttpUserIdModule). Я использовал его для отправки заголовка P3P, но nginx не отправлял заголовок последовательно , возможно, из-за этой строки в их документации:

Директива присваивает значение заголовку P3P, который будет отправлен вместе с cookie.

Я видел, что заголовки проходили при проверке с помощью curl или lynx, но не когда япроверил с помощью Firebug или Charles. Возможно, есть опция конфигурации, чтобы это исправить, но я не смог ее найти.

В любом случае, , если вы извлекаете директиву заголовка OUT из HTTPUserIdModule и просто отправляете заголовоквручную в коде это работает . Вероятно, это будет работать, если вы вручную отправляете заголовок, используя HTTPHeadersModule http://wiki.nginx.org/HttpHeadersModule,, но я еще не проверял это.

Как только он работал через кодЯ увидел, что мне не нужен заголовок для всех файлов - достаточно было установить его только для установки файлов / получения файлов cookie, вопреки многим советам Я видел.

Кроме того, мой CP был явно слишком агрессивным, несмотря на то, что редактор политики IBM сказал, что все в порядке.Я использовал более простой CP, и это сработало.

0 голосов
/ 29 июля 2013

Изменения с nginx 0.8.20
Исправлено: строки заголовка ответа FastCGI «Set-Cookie» и «P3P» были не скрывается при кэшировании, если директивы fastcgi_hide_header не были используется с любыми параметрами.

Журнал изменений Nginx

...