Cookie заблокирован / не сохранен в IFRAME в Internet Explorer

Нитки умирают в следующих ситуациях:

  1. Когда выполняемый метод заканчивается (или бросает)
  2. Когда процесс завершается
  3. Когда компьютер выключен или сброшен.
390
задан 10 revs, 2 users 98% 3 April 2012 в 11:12
поделиться

6 ответов

Я заставил его работать, но решение немного сложно, поэтому терпите меня.

, Что происходит

, Как это, Internet Explorer дает более низкий уровень доверия страницам IFRAME (IE называет это "стороннее" содержание). Если страница в IFRAME не имеет Политики конфиденциальности, ее куки заблокированы (который обозначается значком глаза в строке состояния, когда Вы нажимаете на него, это показывает Вам список заблокированных URL).

the evil eye
(источник: piskvor.org )

В этом случае, когда куки заблокированы, идентификатор сессии не отправляется, и целевой сценарий бросает 'сессию, не найденную' ошибка.

(я попытался установить идентификатор сессии в форму и загрузить его из переменных POST. Это работало бы , но по политическим причинам я не мог сделать этого.)

возможно сделать страницу в IFRAME более доверяемой: , если внутренняя страница отправляет заголовок P3P с политикой конфиденциальности, которая приемлема для IE, куки будут приняты .

, Как решить, это

Создает p3p политику

А, который хорошая начальная точка учебное руководство по W3C. Я прошел его, загрузил Редактор Политики конфиденциальности IBM , и там я создал представление политики конфиденциальности и дал ей имя для ссылки на нее (здесь, это было policy1).

ПРИМЕЧАНИЕ : в этой точке на самом деле необходимо узнать, имеет ли сайт политику конфиденциальности, и в противном случае создайте его - собирает ли это пользовательские данные, какой данные, что это делает с ним, у кого есть доступ к нему и т.д. Необходимо найти, что эта информация и думает об этом. Просто удар вместе несколько тегов не сократят его. Этот шаг не может быть сделан просто в программном обеспечении и может быть очень политическим (например, "мы должны продать нашу статистику щелчка?").

(например, "сайт управляется ACME Ltd., он использует анонимные идентификаторы на сессию для своей операции, собирает пользовательские данные, только если явно разрешенный и только в следующих целях, данные хранятся только настолько же долго по мере необходимости, только наша компания имеет доступ к нему, и т.д. и т.д. ").

(При редактировании с этим инструментом, возможно просмотреть ошибки/пропуск в политике. Также очень полезный вкладка "HTML Policy": в нижней части это имеет "Оценку политики" - быстрая проверка, если политика будет заблокирована настройками по умолчанию 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> шоу весь URIs, который будет использовать эту политику (в моем случае, целом сайте). Файл политики, который я экспортировал от Редактора, был загружен на 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 ДОЛЖНЫ правдиво представить Вашу собственную политику конфиденциальности!

Прибыль!

В этой конфигурации, Дурной глаз не появляется, cookie сохраняются даже в IFRAME и работах приложения.

Редактирование: Что НЕ сделать, если Вам не нравится защищать от судебных процессов

, Несколько человек предложили "просто удар некоторые теги в Ваш заголовок P3P, пока Дурной глаз не сдается".

теги не являются только набором битов, они имеют значения реального мира , и их использование дает Вам обязанности по реальному миру !

, Например, притворяясь то, что Вы никогда не собираете пользовательские данные, могло бы сделать браузер счастливым, но если Вы на самом деле собираете пользовательские данные, P3P конфликтует с действительностью. Простой и простой, Вы целеустремленно лжете своим пользователям , и это могло бы быть преступным поведением в некоторых странах. Как в, "попадают в тюрьму, не собирают 200$".

Несколько примеров ( см. p3pwriter для полного набора тегов ):

  • NOI: "Веб-сайт не делает собранных определенных данных". (как только существует какая-либо настройка, вход в систему или какой-либо сбор данных (***** Аналитика, кто-либо?), Вы должны подтверждать его в своем P3P)
  • STP: информация сохраняется для встречи формулируемой цели. Это запрашивает информацию, которая будет отброшена в самое раннее возможное время. Сайты ДОЛЖНЫ иметь политику хранения, которая устанавливает таблицу времени разрушения. Политика хранения ДОЛЖНА быть включена в или связана от человекочитаемой политики конфиденциальности сайта". (таким образом, если Вы отправляете STP, но не имеете политики хранения, Вы можете совершить мошенничество. Насколько прохладный это? Нисколько.)

я не адвокат, но я не готов обратиться в суд, чтобы видеть, ли заголовок P3P действительно юридически обязателен или если можно обещать пользователям что-либо без на самом деле согласного для удостаивания обещаний.

427
ответ дан 7 revs, 4 users 96% 3 April 2012 в 11:12
поделиться

Лучшее решение состояло бы в том, чтобы выполнить вызов Ajax в iframe к странице, которая получит/установит cookie...

-1
ответ дан Luca Matteis 3 April 2012 в 11:12
поделиться
  • 1
    @saury: декомпиляция может быть полезной для наблюдения " what" но это редко отвечает на " why". – Joachim Sauer 24 May 2013 в 06:58

Одна из возможных вещей - добавить домен в разрешенные сайты с помощью инструментов -> Свойства обозревателя -> Конфиденциальность -> сайты: somedomain.com -> разрешить -> ОК.

3
ответ дан 22 November 2019 в 23:47
поделиться

Возникла аналогичная проблема, я также отправился исследовать, как сгенерировать политику P3P этим утром, вот мой пост о том, как создать свою собственную политику и использовать ее на веб-сайте :) http://everydayopenslikeaflower.blogspot.com/2009/08/how-to-create-p3p-policy-and-implement.html

2
ответ дан 22 November 2019 в 23:47
поделиться

Я смог заставить сглаз исчезнуть, просто добавив этот небольшой заголовок на сайт в IFrame (PHP решение):

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');

Не забудьте нажать ctrl+F5 для перезагрузки сайта, иначе Explorer может все еще показывать сглаз, несмотря на то, что он работает нормально. Это, вероятно, основная причина, почему у меня было так много проблем с тем, чтобы заставить его работать.

Никакой файл политики не требовался.

Редактировать: Я нашел хорошую запись в блоге, которая объясняет проблему с cookies в IFrame. Там также есть быстрое решение в коде C#: Frames, ASPX Pages and Rejected Cookies

55
ответ дан 22 November 2019 в 23:47
поделиться

Это отличная тема по проблеме, однако я обнаружил одну важную деталь (которая была важна на по крайней мере, в моем случае), который не был размещен здесь или где-либо еще (прошу прощения, если я просто пропустил это), было то, что строка P3P должна быть передана в заголовке КАЖДОГО файла, отправленного со стороннего сервера, даже файлов не устанавливать и не использовать файлы cookie, такие как файлы или изображения Javascript. В противном случае файлы cookie будут заблокированы. У меня есть более подробная информация об этом в сообщении здесь: http://posheika.net/?p=110

14
ответ дан 22 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: