Я получил его на работу, но решение немного сложное, так что терпите меня.
Что происходит
Таким образом, Internet Explorer обеспечивает более низкий уровень доверия страницам IFRAME (IE называет это «сторонним» контентом). Если страница внутри IFRAME не имеет Политики конфиденциальности, ее куки блокируются (что обозначается значком глаза в строке состояния, при нажатии на который отображается список заблокированных URL-адресов).
(источник: piskvor.org )
В этом случае, когда куки блокируются, идентификатор сеанса не отправляется, и целевой скрипт выдает ошибку «сеанс не найден».
(Я попытался установить идентификатор сессии в форму и загрузить его из переменных POST. Это сработало бы , но по политическим причинам я не смог этого сделать.)
Можно сделать страницу внутри IFRAME более надежной: если внутренняя страница отправляет заголовок P3P с политикой конфиденциальности, приемлемой для IE, файлы cookie будут приняты .
Как это решить
Создайте политику p3p
Хорошей отправной точкой является учебник по W3C . Я прошел через это, скачал Редактор политики конфиденциальности IBM и там я создал представление политики конфиденциальности и дал ему имя для ссылки на него (здесь оно было policy1
).
ПРИМЕЧАНИЕ : на данный момент вам действительно нужно выяснить, есть ли на вашем сайте политика конфиденциальности, а если нет, то создать ее - собирает ли она пользовательские данные, какие данные, что с ними происходит, кто имеет к ней доступ, и т.д. Вам нужно найти эту информацию и подумать об этом. Просто сложив несколько тегов, вы не обрежете его. Этот шаг не может быть сделан исключительно в программном обеспечении и может быть очень политическим (например, «мы должны продавать нашу статистику кликов?»).
(например, «сайт управляется ACME Ltd., он использует анонимные идентификаторы сеанса для своей работы, собирает пользовательские данные только в случае явного разрешения и только для следующих целей, данные хранятся только столько времени, сколько необходимо, только наша компания»). имеет к нему доступ и т. д. и т. д.).
(При редактировании с помощью этого инструмента можно просматривать ошибки / пропуски в политике. Также очень полезна вкладка «Политика HTML»: в нижней части находится «Оценка политики» - быстрая проверка, будет ли политика заблокирована по умолчанию в настройках IE)
Редактор экспортирует в файл .p3p, который представляет собой XML-представление вышеуказанной политики. Кроме того, он может экспортировать «компактную версию» этой политики.
Ссылка на политику
Затем http://example.com/w3c/p3p.xml
понадобился файл ссылки на политику ( ) (индекс политик конфиденциальности, используемых сайтом):
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/example-com.p3p#policy1">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
В <INCLUDE>
показывает все идентификаторы URI , которые будут использовать эту политику (в моем случае, весь сайт). Файл политики, который я экспортировал из редактора, был загружен вhttp://example.com/w3c/example-com.p3p
Отправьте компактный заголовок с ответами
Я установил веб-сервер на example.com для отправки компактного заголовка с ответами, например так:
HTTP/1.1 200 OK
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref
является относительным URI к файлу ссылки на политику (который, в свою очередь, ссылается на политику конфиденциальности), CP
представляет собой компактное представление политики. Обратите внимание, что комбинация заголовков P3P в этом примере может не применяться на вашем конкретном веб-сайте; Ваши заголовки P3P ДОЛЖНЫ правдиво представлять вашу собственную политику конфиденциальности!
Прибыль!
В этой конфигурации Evil Eye не появляется, куки сохраняются даже в IFRAME, и приложение работает.
Изменить: Что НЕ делать, если вы не любите защищать от судебных процессов
Несколько человек предложили «просто вставить несколько тегов в заголовок P3P, пока дурной глаз не сдастся».
Теги - это не просто куча битов, они имеют значения реального мира , а их использование дает вам ответственность реального мира !
Например, притворство, что вы никогда не собираете пользовательские данные, может сделать браузер счастливым, но если вы на самом деле собираете пользовательские данные, P3P вступает в противоречие с реальностью. Проще говоря, вы целенаправленно лжете своим пользователям , и в некоторых странах это может быть преступным поведением. Например, «отправляйся в тюрьму, не собирай 200 долларов».
Несколько примеров ( полный набор тегов см. В p3pwriter ):
- NOI : «Веб-сайт не собирает идентифицированные данные». (как только появится какая-либо настройка, логин или какой-либо сбор данных (***** Analytics, кто-нибудь?), вы должны подтвердить это в своем P3P)
- STP : Информация сохраняется для достижения заявленной цели. Это требует, чтобы информация была удалена как можно раньше. Сайты ДОЛЖНЫ иметь политику хранения, которая устанавливает расписание уничтожения. Политика хранения ДОЛЖНА быть включена или связана с понятной для человека политикой конфиденциальности сайта. "(Поэтому, если вы отправляете,
STP
но у вас нет политики хранения, возможно , вы совершаете мошенничество. Насколько это круто? Совсем нет.)
Я не юрист, но я не хочу идти в суд, чтобы узнать, действительно ли заголовок P3P имеет юридическую силу или вы можете пообещать своим пользователям что-нибудь, фактически не желая выполнять свои обещания.