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

у меня есть два веб-сайта, скажем они example.com и anotherexample.net. On anotherexample.net/page.html, у меня есть IFRAME SRC="http://example.com/someform.asp". Этот IFRAME отображает форму для пользователя, чтобы заполнить и отправить в http://example.com/process.asp. Когда я открываю форму ("someform.asp") в отдельном окне браузера, все работает хорошо. Однако,когда я загружаю someform.asp как IFRAME в IE 6 или IE 7, куки для example.com не сохраняются. в Firefox эта проблема не появляется.

для целей тестирования я создал аналогичную настройку на http://newmoon.wz.cz/test/page.php .

example.com использует сеансы на основе файлов cookie (и я ничего не могу с этим поделать), поэтому без файлов cookie, process.asp не выполнять. как заставить IE сохранить эти куки?

результаты обнюхивания HTTP-трафика: на GET / someform.ответ asp, есть допустимый заголовок набора Cookie для каждого сеанса (например,Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY), но на POST /process.запрос asp, нет заголовка Cookie на все.

Edit3: некоторые сценарии AJAX+serverside, по-видимому, способны обойти проблему, но это выглядит очень похоже на ошибку, плюс он открывает совершенно новый набор безопасности. Я не хочу, чтобы мои приложения использовали комбинацию bug+security hole только потому, что это легко.

"правка":политика P3P была основной причиной, полное объяснение ниже.

22 ответов


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

что происходит

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

сглаз http://stuff.piskvor.org/cookies_blocked_MSIE_eye.png

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

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

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

как решить

создать политику p3p

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

Примечание: на данный момент вам действительно нужно узнать, имеет ли ваш сайт политику конфиденциальности, а если нет, создайте его - собирает ли он пользовательские данные, какие данные, что он делает с ним, кто имеет к нему доступ и т. д. Вам нужно найти эту информацию и думаю об этом. просто хлопнув вместе несколько тегов не будет вырезать его. этот шаг не может быть сделан исключительно в программном обеспечении и может быть очень политическим (например, " должны ли мы продать наш клик статистика?").

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

(при редактировании с помощью этого инструмента можно просматривать ошибки / пропуски в политике. Также очень полезна вкладка "HTML Policy": внизу она имеет " Policy Оценка " - быстрая проверка, будет ли политика заблокирована настройками IE по умолчанию)

редактор экспортирует в a .файл 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 должны правдиво представлять вашу собственную политику конфиденциальности!

профит!

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

Edit: что не делать, если вам не нравится защищать от судебных исков

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

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

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

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

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

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


Я провел большую часть своего дня, изучая эту вещь P3P, и я чувствую необходимость поделиться тем, что я узнал.

Я заметил, что концепция P3P очень устарела и, похоже, действительно используется/применяется Internet Explorer (IE).

самое простое объяснение: IE хочет, чтобы вы определили заголовок P3P, если вы используете cookies.

это хорошая идея, и, к счастью, большую часть времени не предоставление этого заголовка не вызовет никаких проблем (читать браузер предупреждения.) Если ваш веб-сайт / веб-приложение не загружается на другой веб-сайт с помощью фрейма (i). Это где IE становится массивной болью в***. Он не позволит вам установить cookie, если не установлен заголовок P3P.

зная это, я хотел найти ответ на следующие два вопроса:

  1. кого это волнует? Другими словами, можно ли подать в суд, если я помещу слово "картофель" в заголовок?
  2. что делают другие компании?

мой выводы:

  1. никому нет дела. Я не могу найти ни одного документа, который предполагает, что эта технология имеет какой-либо юридический вес. Во время моих исследований я не нашел ни одной страны по всему миру, которая приняла закон, который запрещает вам помещать слово "картофель" в заголовок P3P
  2. и Google, и Facebook помещают ссылку в поле заголовка P3P, ссылаясь на страницу, описывающую, почему у них нет заголовка P3P.

концепция родилась в 2002 и меня озадачивает, что эта устаревшая и юридически нереализованная концепция по-прежнему навязывается разработчикам в IE. Если этот заголовок не имеет каких-либо юридических последствий, этот заголовок следует игнорировать (или, альтернативно, генерировать предупреждение или уведомление в консоли). Не принудительно! Теперь я вынужден поместить строку в свой код (и отправить заголовок клиенту), который абсолютно ничего не делает.

короче говоря-чтобы IE был доволен-добавьте следующую строку в свой PHP-код (другие языки должно выглядеть похоже)

header('P3P: CP="Potato"');

проблема решена, и IE доволен этим картофелем.


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

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

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

файл политики не был необходим вообще.

изменить: Я нашел хорошую запись в блоге, которая объясняет проблема с cookies в IFrames. Он также имеет быстрое исправление в коде C# : фреймы, страницы ASPX и отклоненные куки


это похоронено в комментариях других ответов, но я почти пропустил его, поэтому кажется, что он заслуживает своего собственного ответа.

для просмотра: для того, чтобы IE принимал сторонние куки, вам нужно обслуживать ваши файлы с заголовком http под названием p3p в формате:

CP="my compact p3p policy"

но p3p в значительной степени мертв в качестве стандарта на данный момент, и вы можете легко заставить IE работать, не инвестируя время и юридические ресурсы в создание реальной политики p3p. Это потому, что если ваш заголовок политики compact p3p недействителен, т. е. фактически рассматривает его как хорошую политику и принимает сторонние файлы cookie. Таким образом, вы можете использовать заголовок p3p, такой как this

CP="This site does not have a p3p policy."

вы можете дополнительно включить ссылку на страницу, которая объясняет, почему у вас нет политики p3p, как это делают Google и Facebook (они указывают здесь:https://support.google.com/accounts/answer/151657 и здесь:https://www.facebook.com/help/327993273962160/).

наконец, это важно чтобы отметить, что все файлы, обслуживаемые с сайта 3rd party, должны иметь заголовок p3p, а не только тот, который устанавливает cookie, поэтому вы не можете просто сделать это в своем PHP, asp.net, etc код. Вероятно, вам лучше настроить на уровне веб-сервера (например, в IIS или Apache).


у меня тоже была эта проблема, я думал, что опубликую код, который я использовал в своем проекте MVC2. Будьте осторожны, когда в жизненном цикле страницы вы добавляете в заголовок, или вы получите HttpException"сервер не может добавить заголовок после отправки HTTP-заголовков."Я использовал пользовательский ActionFilterAttribute для метода OnActionExecuting (вызывается до выполнения действия).

/// <summary>
/// Privacy Preferences Project (P3P) serve a compact policy (a "p3p" HTTP header) for all requests
/// P3P provides a standard way for Web sites to communicate about their practices around the collection, 
/// use, and distribution of personal information. It's a machine-readable privacy policy that can be 
/// automatically fetched and viewed by users, and it can be tailored to fit your company's specific policies.
/// </summary>
/// <remarks>
/// More info http://www.oreillynet.com/lpt/a/1554
/// </remarks>
public class P3PAttribute : ActionFilterAttribute
{
    /// <summary>
    /// On Action Executing add a compact policy "p3p" HTTP header
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

        base.OnActionExecuting(filterContext);
    }
}

пример использования:

[P3P]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}

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


любой, у кого есть эта проблема в узле.js.

затем добавьте этот модуль p3p и включите этот модуль в middleware.

npm install p3p

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

сначала требуется этот модуль в приложении.js

var express = require('express');
var app = express();
var p3p = require('p3p');

тогда используйте его как промежуточное ПО

app.use(p3p(p3p.recommended));

Он добавит заголовки p3p в объект res. Не нужно делать лишних вещей.

вы получите больше информации at:

https://github.com/troygoode/node-p3p


Если кто-то ищет линию Apache; мы использовали этот.

набор заголовков P3P "CP=\" спасибо IE8\""

Это действительно не имело значения, что мы установили значение CP, пока есть заголовок P3P.


одна возможная вещь, чтобы сделать, это добавить домен разрешенных сайтов в Инструменты - > Параметры интернета - > конфиденциальность - > сайты: somedomain.com - > разрешить - > OK.


этот пост предоставляет некоторые комментарии к P3P и короткое решение, которое уменьшает проблемы с IE7 и IE8.


одно решение, которое я не видел здесь, использует режим вместо cookies. Конечно, это может не соответствовать всем требованиям, но в некоторых случаях это легко исправить.


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


я реализовал полную политику P3P раньше, но не хотел снова проходить через хлопоты для нового проекта, над которым я работал. Я нашел эту ссылку полезной для простого решения проблемы, только указав минимальную компактную политику P3P "CAO PSA OUR":

http://blog.sweetxml.org/2007/10/minimal-p3p-compact-policy-suggestion.html

в статье цитируется (теперь сломанная) ссылка на статью Microsoft kb. Политика сделала трюк для я!


Я исследовал эту проблему в отношении входа в систему через службы управления доступом Azure и не смог подключить головку и хвосты чего-либо.

затем, наткнулся на этот пост https://blogs.msdn.microsoft.com/ieinternals/2011/03/10/beware-cookie-sharing-in-cross-zone-scenarios/

короче говоря, IE не разделяет Куки по зонам (например. Интернет против надежных сайтов).

Итак, если ваша цель IFrame и html-страница находятся в разных P3P зоны не поможет ни с чем.


вы также можете объединить p3p.xml и политика.xml-файлы как таковые:

/home/ubuntu/sites/shared/w3c/p3p.xml

<META xmlns="http://www.w3.org/2002/01/P3Pv1">
  <POLICY-REFERENCES>
    <POLICY-REF about="#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
  <POLICIES>
    <POLICY discuri="" name="policy1">
      <ENTITY>
        <DATA-GROUP>
          <DATA ref="#business.name"></DATA> 
          <DATA ref="#business.contact-info.online.email"></DATA> 
        </DATA-GROUP>
      </ENTITY>
      <ACCESS>
        <nonident/>
      </ACCESS>
      <!-- if the site has a dispute resolution procedure that it follows, a DISPUTES-GROUP should be included here -->
      <STATEMENT>
        <PURPOSE>
          <current/>
          <admin/>
          <develop/>
        </PURPOSE>
        <RECIPIENT>
          <ours/>
        </RECIPIENT>
        <RETENTION>
          <indefinitely/>
        </RETENTION>
        <DATA-GROUP>
          <DATA ref="#dynamic.clickstream"/>
          <DATA ref="#dynamic.http"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </POLICIES>
</META>

Я нашел самый простой способ добавить заголовок-прокси через Apache и использовать mod_headers, как таковой:

<VirtualHost *:80>
  ServerName mydomain.com

  DocumentRoot /home/ubuntu/sites/shared/w3c/

  ProxyRequests off
  ProxyPass /w3c/ !
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ProxyPreserveHost on

  Header add p3p 'P3P:policyref="/w3c/p3p.xml", CP="NID DSP ALL COR"'
</VirtualHost>

таким образом, мы прокси все запросы, кроме тех, чтобы /w3c/p3p.xml на наш сервер приложений.

вы можете проверить все это с помощью валидатор W3C


Если вы владеете доменом, который должен быть встроен, то вы могли бы, перед вызовом страницы, которая включает в себя IFrame, перенаправить в этот домен, который создаст cookie и перенаправить обратно, как объяснено здесь: http://www.mendoweb.be/blog/internet-explorer-safari-third-party-cookie-problem/

Это будет работать для Internet Explorer, но и для Safari (поскольку Safari также блокирует сторонние куки).


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

Я пытался вызвать сторонний файл cookie на своем сайте, и, конечно, он не работал в Internet Explorer 10, даже на низком уровне безопасности... не спрашивай почему. В iframe я вызывал read_cookie.на PHP (эхо $их помощью) с помощью AJAX.

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

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

угадайте, что он делает! Поэтому, если вы json_encode свой cookie затем декодировать после вашего ajax запроса, вы получите его!

может быть, есть что-то, что я пропустил, и если бы я сделал, все мои извинения, но я никогда не видел что-то настолько глупо. Третий блок партии печенье для безопасности, почему бы и нет, но пусть это пройдет, если закодированный? Где сейчас охрана?

Я надеюсь, что этот пост поможет кому-то и снова, если я что-то пропустил, и я тупой, пожалуйста, просветите меня!


это, наконец, сработало для меня (после большой спешки и генерации некоторых политик с помощью генератора политики IBMs). Вы можете загрузить генератор политики здесь: http://www.softpedia.com/get/Security/Security-Related/P3P-Policy-Editor.shtml

Я больше не смог загрузить генератор с официального сайта IBM.

Я создал эти файлы в корневой папке веб-приложения

/index.php
/w3c/policy.html (Human readable format)
/w3c/p3p.xml
/w3c/policy.p3p
    .php: просто отправьте дополнительный заголовок:
header('P3P: policyref="/w3c/p3p.xml", CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV DEM"');
  1. содержание p3p.xml
<META>
    <POLICY-REFERENCES>
        <POLICY-REF about="/w3c/policy.p3p#App">
            <INCLUDE>/</INCLUDE>
            <COOKIE-INCLUDE/>
        </POLICY-REF>
    </POLICY-REFERENCES>
</META>
  1. содержание моей политики.html файл

<html>
<head>
<STYLE type="text/css">
title { color: #3333FF}
</STYLE>
<title>Privacy Statement for YOUR COMPANY NAME</title>
</head>
<body>
<h1 class="title">Privacy Policy</h1>
<!-- "About Us" section of privacy policy -->
<h2>About Us</h2>
<p>This is a privacy policy for YOUR COMPANY NAME.
Our homepage on the Web is located at <a href="YOURWEBSITE">
YOURWEBSITE</a>.
The full text of our privacy policy is available on the Web at 
<a href="ABSOLUTE URL OF THIS FILE">
ABSOLUTE URL OF THIS FILE</a>
This policy does not tell users where they can go to exercise their opt-in or opt-out options.
<p>We invite you to contact us if you have questions about this policy.
You may contact us by mail at the following address:
<pre>FIRSTNAME LASTNAME
YOUR ADDRESS HERE
</pre>
<p>You may contact us by e-mail at 
<a href="mailto:[email protected]">
[email protected]</a>. 
You may call us at TELEPHONENUMBER.
<!-- "Privacy Seals" section of privacy policy -->
<h2>Dispute Resolution and Privacy Seals</h2>
<p>We have the following privacy seals and/or dispute resolution mechanisms.
If you think we have not followed our privacy policy in some way, they can help you resolve your concern.
<ul>
<li>
<b>Dispute</b>:
Contact us for further information
</ul>
<!-- "Additional information" section of privacy policy -->
<h2>Additional Information</h2>
<p>
This policy is valid for 1 day from the time that it is loaded by a client.
</p>
<!-- "Data Collection" section of privacy policy -->
<h2>Data Collection</h2>
<p>P3P policies declare the data they collect in groups (also referred to as "statements").
This policy contains 1 data group.
<hr width="50%" align="center">
<h3>Group "App control data"</h3>
<p>We collect the following information:
<ul>
<li>HTTP cookies</li>
</ul>
<p>This data will be used for the following purposes:</p>
<ul>
<li>Completion and support of the current activity.</li>
<li>Web site and system administration.</li>
<li>Research and development.</li>
<li>Historical preservation.</li>
<li>Other purposes<p>Control Flow of the application</p></li>
</ul>
<p>This data will be used by ourselves and our agents.
<p>The data in this group has been marked as non-identifiable. This means that there is no
reasonable way for the site to identify the individual person this data was collected from.
<p>The following explanation is provided for why this data is collected:</p>
<blockquote>This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</blockquote>
<!-- "Use of Cookies" section of privacy policy -->
<hr width="50%" align="center">
<h2>Cookies</h2>
<p>Cookies are a technology which can be used to provide you with tailored information from a Web site. A cookie is an element of data that a Web site can send to your browser, which may then store it on your system. You can set your browser to notify you when you receive a cookie, giving you the chance to decide whether to accept it.
<p>Our site makes use of cookies.
Cookies are used for the following purposes:
<ul>
<li>Site administration
<li>Completing the user's current activity
<li>Research and development
<li>Other
(Control Flow of the application)
</ul>
<!-- "Compact Policy Explanation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Compact Policy Summary</h2>
<p>The compact policy which corresponds to this policy is:
<pre>
    CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV"
</pre>
<p>The following table explains the meaning of each field in the compact policy.
<center><table width="80%" border="1" cols="2">
<tr><td align="center" valign="top" width="20%"><b>Field</b></td><td align="center" valign="top" width="80%"><b>Meaning</b></td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CP=</tt></td>
<td align="left" valign="top" width="80%">This is the compact policy header; it indicates that what follows is a P3P compact policy.</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ALL</tt></td>
<td align="left" valign="top" width="80%">
Access to all collected information is available.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DSP</tt></td>
<td align="left" valign="top" width="80%">
The policy contains at least one dispute-resolution mechanism.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NID</tt></td>
<td align="left" valign="top" width="80%">
The information collected is not personally identifiable.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CURa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for completion of the current activity.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ADMa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for site administration.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DEVa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for research and development.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>HISa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for historical archival purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OTPa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for other purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OUR</tt></td>
<td align="left" valign="top" width="80%">
The data is given to ourselves and our agents.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NOR</tt></td>
<td align="left" valign="top" width="80%">
The data is not kept beyond the current transaction.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NAV</tt></td>
<td align="left" valign="top" width="80%">
Navigation and clickstream data is collected.
</td></tr>
</table></center>
<p>The compact policy is sent by the Web server along with the cookies it describes.
For more information, see the P3P deployment guide at <a href="http://www.w3.org/TR/p3pdeployment">http://www.w3.org/TR/p3pdeployment</a>.
<!-- "Policy Evaluation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Policy Evaluation</h2>
<p>Microsoft Internet Explorer 6 will evaluate this policy's compact policy whenever it is used with a cookie.
The actions IE will take depend on what privacy level the user has selected in their browser (Low, Medium, Medium High, or High; the default is Medium.
In addition, IE will examine whether the cookie's policy is considered satisfactory or unsatisfactory, whether the cookie is a session cookie or a persistent cookie, and whether the cookie is used in a first-party or third-party context.
This section will attempt to evaluate this policy's compact policy against Microsoft's stated behavior for IE6.
<p><b>Note:</b> this evaluation is currently experimental and should not be considered a substitute for testing with a real Web browser.
<p><b>Satisfactory policy</b>: this compact policy is considered <em>satisfactory</em> according to the rules defined by Internet Explorer 6.
IE6 will accept cookies accompanied by this policy under the High, Medium High, Medium, Low, and Accept All Cookies settings.
</body></html>
  1. содержание политики.спецификация P3P
<?xml version="1.0"?>
<POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
    <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM -->

    <!-- Expiry information for this policy -->
    <EXPIRY max-age="86400"/>

<POLICY
    name="App"
    discuri="ABSOLUTE URL TO policy.html"
    xml:lang="de">
    <!-- Description of the entity making this policy statement. -->
    <ENTITY>
    <DATA-GROUP>
<DATA ref="#business.name">COMPANY NAME</DATA>
<DATA ref="#business.contact-info.online.email">[email protected]</DATA>
<DATA ref="#business.contact-info.online.uri">YOURWEBSITE</DATA>
<DATA ref="#business.contact-info.telecom.telephone.number">YOURPHONENUMBER</DATA>
<DATA ref="#business.contact-info.postal.organization">FIRSTNAME LASTNAME</DATA>
<DATA ref="#business.contact-info.postal.street">STREET</DATA>
<DATA ref="#business.contact-info.postal.city">CITY</DATA>
<DATA ref="#business.contact-info.postal.stateprov">STAGE</DATA>
<DATA ref="#business.contact-info.postal.postalcode">POSTALCODE</DATA>
<DATA ref="#business.contact-info.postal.country">Germany</DATA>
    </DATA-GROUP>
    </ENTITY>

    <!-- Disclosure -->
    <ACCESS><all/></ACCESS>


    <!-- Disputes -->
    <DISPUTES-GROUP>
        <DISPUTES resolution-type="service" service="YOURWEBSITE CONTACT FORM" short-description="Dispute">
            <LONG-DESCRIPTION>Contact us for further information</LONG-DESCRIPTION>
    <!-- No remedies specified -->
        </DISPUTES>
    </DISPUTES-GROUP>

    <!-- Statement for group "App control data" -->
    <STATEMENT>
        <EXTENSION optional="yes">
            <GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="App control data"/>
        </EXTENSION>

    <!-- Consequence -->
    <CONSEQUENCE>
This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</CONSEQUENCE>

    <!-- Data in this statement is marked as being non-identifiable -->
    <NON-IDENTIFIABLE/>

    <!-- Use (purpose) -->
    <PURPOSE><admin/><current/><develop/><historical/><other-purpose>Control Flow of the application</other-purpose></PURPOSE>

    <!-- Recipients -->
    <RECIPIENT><ours/></RECIPIENT>

    <!-- Retention -->
    <RETENTION><no-retention/></RETENTION>

    <!-- Base dataschema elements. -->
    <DATA-GROUP>
    <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/></CATEGORIES></DATA>
    </DATA-GROUP>
</STATEMENT>

<!-- End of policy -->
</POLICY>
</POLICIES>

в Rails я использую этот камень:https://github.com/merchii/rack-iframe Bawically он устанавливает набор аббревиатур без файла ссылки:https://github.com/merchii/rack-iframe/blob/master/lib/rack/iframe.rb#L8

легко установить когда вы не заботитесь на всех о значении материала p3p.


для тех, кто пытается получить компактную политику P3P, работающую со статическим контентом:

Это только возможно, если вы можете отправлять пользовательские заголовки ответов на стороне сервера со статическим содержимым.

более подробно см. Мой ответ здесь: установить код P3P в HTML


в Rails 3.2 я использую:

class ApplicationController < ActionController::Base  

  before_filter :set_p3p  

  private  
    # for IE session cookies thru iframe  
    def set_p3p  
      headers['P3P'] = 'CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"'  
    end  
end  

Я получил это от: http://dot-net-web-developer-bristol.blogspot.com/2012/04/setting-p3p-header-in-rails-session.html


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