Cookie заблокирован/не сохранен в IFRAME в Internet Explorer
у меня есть два сайта, скажем, они example.com
и anotherexample.net
.
На 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 сохранить эти файлы cookie?
результаты обнюхивания HTTP-трафика: на GET / someform.ответ asp, есть допустимый заголовок Cookie для каждого сеанса (например,Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY
), но на пост /процесс.ASP запрос, нет заголовка Cookie на все.
Edit3: некоторые AJAX + серверные скрипты, по-видимому, способны обойти проблему, но это очень похоже на ошибку, плюс она открывает целый новый набор безопасности. Я не хочу, чтобы мои приложения использовали комбинацию bug+security hole только потому, что это легко.
Edit: the политика P3P была основной причиной, полное объяснение ниже.
22 ответа:
я получил его на работу, но решение немного сложнее, так, медведь со мной.
что происходит
как это, Internet Explorer дает более низкий уровень доверия к страницам IFRAME (IE называет это "сторонним" контентом). Если страница внутри IFRAME не имеет Политики конфиденциальности, ее файлы cookie блокируются (что указывается значком глаза в строке состояния, когда вы нажимаете на него, он показывает вам список заблокированных URL-адресов).
сглаз http://stuff.piskvor.org/cookies_blocked_MSIE_eye.png
в этом случае, когда файлы cookie заблокированы, идентификатор сеанса не отправляется, и целевой скрипт выдает ошибку "сеанс не найден".
(Я попытался установить идентификатор сеанса в форму и загрузить его из переменных POST. было бы, но по политическим причинам я не мог этого сделать.)
можно сделать страницу внутри IFRAME более надежной: если внутренняя страница отправляет заголовок P3P с политикой конфиденциальности, которая приемлема для IE, куки-файлы будут приняты.
как ее решить
создать политику p3p
хорошей отправной точкой является W3C tutorial. Я прошел через это, скачал редактор Политики конфиденциальности IBM и там я создал представление политики конфиденциальности и дал ему имя, чтобы ссылаться на него (здесь это было
policy1
).Примечание: на данный момент вам действительно нужно узнать, есть ли у вашего сайта Политика конфиденциальности, а если нет, создайте ее - собирает ли она пользовательские данные, какие данные, что она делает с ним, кто имеет к ней доступ и т. д. Вам нужно найти эту информацию и думаю об этом. просто хлопнув вместе несколько тегов не будет вырезать его. этот шаг не может быть сделан чисто в программном обеспечении, и может быть очень политическим (например, " если мы продадим наш клик статистика?").
(например, " сайт управляется компанией ACME Ltd., он использует анонимные идентификаторы за сеанс для своей работы, собирает пользовательские данные только в том случае, если это явно разрешено и только для следующих целей, данные хранятся только до тех пор, пока это необходимо, только наша компания имеет к ним доступ и т. д. так далее.").
(при редактировании с помощью этого инструмента можно просматривать ошибки / пропуски в политике. Также очень полезной является вкладка "HTML-код политики": внизу, у него есть "политика Оценка " - быстрая проверка, будет ли политика заблокирована настройками 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>
The
<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, пока сглаз не даст вверх."
теги-это не только куча битов, у них есть значения реального мира, и их использование дает вам реальные обязанности!
вы целенаправленно лжете своим пользователям, и это может быть преступное поведение в некоторых странах. Как в "иди в тюрьму, не собирают $200".несколько примеров (смотрите p3pwriter для полного набора тегов):
- NOI: "веб-сайт не собирает идентифицированные данные."(как только есть какие-либо настройки, логин или сбор данных (***** аналитика, кто-нибудь?), ты должны подтвердите это в своем P3P)
- STP: информация сохраняется для достижения заявленной цели. Это требует информация должна быть отброшена как можно скорее. Сайты должны иметь политику, которая устанавливает сроки уничтожения. Политика хранения должна быть включена в политику конфиденциальности сайта или связана с ней.(так что если вы пошлете
STP
но у вас нет политики хранения, вы мая будет считаться мошенничеством. Насколько это круто? Нисколько.)Я не адвокат, но я не хочу идти в суд, чтобы узнать, является ли заголовок P3P действительно юридически обязательный или если вы можете пообещать своим пользователям что-либо, не желая на самом деле выполнять свои обещания.
Я провел большую часть своего дня, изучая эту вещь P3P, и я чувствую необходимость поделиться тем, что я узнал.
Я заметил, что концепция P3P очень устарела и, похоже, только используется/применяется Internet Explorer (IE).
самое простое объяснение: IE хочет, чтобы вы определили заголовок P3P, если вы используете куки.
Это хорошая идея, и, к счастью, большую часть времени не предоставляя этот заголовок не вызовет никаких проблем (читать браузер предупреждения.) Если ваш веб-сайт / веб-приложение не загружается на другой веб-сайт с помощью (i)фрейма. Именно здесь IE становится массивной болью в***. Это не позволит вам установить cookie, если не установлен заголовок P3P.
зная это, я хотел найти ответ на следующие два вопроса:
- кого это волнует? Другими словами, можно ли подать в суд, если я помещу слово "картофель" в заголовок?
- что делают другие компании?
мой выводы таковы:
- никому нет дела. Я не могу найти ни одного документа, который предполагает, что эта технология имеет какой-либо юридический вес. Во время моего исследования я не нашел ни одной страны по всему миру, которая приняла закон, который запрещает вам помещать слово "картофель" в заголовок P3P
- и 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 чтобы перезагрузить ваш сайт или проводник все еще может показать сглаз, несмотря на то, что он работает нормально. Это, вероятно, главная причина, почему у меня было так много проблем, чтобы заставить его работать.
никакой файл политики не был необходим вообще.
изменить: Я нашел хорошую запись в блоге, которая объясняет проблема с куки-файлами в IFrames. Он также имеет быстрое исправление в коде C# : фреймы, страницы ASPX и отклоненные файлы cookie
это похоронено в комментариях других ответов, но я почти пропустил его, поэтому кажется, что он заслуживает своего собственного ответа.
чтобы просмотреть: для того, чтобы IE принимал сторонние куки, вам нужно обслуживать ваши файлы с заголовком http под названием p3p в формате:
CP="my compact p3p policy"
но, p3p в значительной степени мертв как стандарт на данный момент, и вы можете легко заставить IE работать, не вкладывая время и юридические ресурсы в создание реальной политики p3p. Это потому, что если ваш компактный заголовок политики 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/).
наконец, это важно чтобы отметить, что все файлы, обслуживаемые с стороннего сайта, должны иметь заголовок p3p, а не только тот, который устанавливает cookie, поэтому вы не можете просто сделать это в своем PHP, asp.net и т.д. код. Вероятно, вам лучше настроить его на уровне веб-сервера (т. е. в 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 должна быть передана в заголовке каждый файл, отправленный с стороннего сервера, даже файлы, не устанавливающие или не использующие файлы cookie, такие как файлы Javascript или изображения. В противном случае они будут заблокированы. У меня есть больше об этом в посте здесь: http://posheika.net/?p=110
любой, кто имеет эту проблему в узле.js.
затем добавьте этот модуль p3p и включите этот модуль в middleware.
npm install p3p
Я использую экспресс, поэтому я добавляю его в приложение.js
сначала требуется этот модуль в приложении.js
var express = require('express'); var app = express(); var p3p = require('p3p');
затем использовать его в качестве промежуточного
app.use(p3p(p3p.recommended));
Он добавит заголовки p3p в объект res. Не нужно делать никаких дополнительных вещей.
вы получите больше информации в:
Если кто-то ищет линию Apache; мы использовали этот.
набор заголовков P3P "CP=\" спасибо IE8\""
Это действительно не имело значения, что мы установили значение CP, пока есть заголовок P3P.
одна из возможных вещей, чтобы сделать, это добавить домен на разрешенные сайты в сервисах - > Свойства обозревателя - > конфиденциальность - > сайты: somedomain.com - > разрешить - > ОК.
этот пост предоставляет некоторые комментарии к P3P и короткое решение, которое уменьшает проблемы с IE7 и IE8.
одно решение, которое я не видел здесь, использует режим вместо печенья. Конечно, это может не соответствовать всем требованиям, но в некоторых случаях это легко исправить.
получил аналогичную проблему, также пошел исследовать, как создать политику 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/
короче, т. е. не совместно использовать файлы cookie в различных зонах (например. Интернет против надежных сайтов).
Итак, если ваша цель 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).
Я знаю, что немного поздно вносить свой вклад в эту тему, но я потерял так много часов, что, возможно, этот ответ поможет кому-то.
Я пытался вызвать сторонний файл cookie на моем сайте, и, конечно же, он не работал в Internet Explorer 10, даже при низком уровне безопасности... не спрашивай меня почему. В iframe я вызывал read_cookie.php (echo $_COOKIE) с ajax.
и я не знаю, почему я не смог установить политику P3P для решения проблема...
во время моего поиска я увидел что-то о получении куки в 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"');
- содержание p3p.xml
<META> <POLICY-REFERENCES> <POLICY-REF about="/w3c/policy.p3p#App"> <INCLUDE>/</INCLUDE> <COOKIE-INCLUDE/> </POLICY-REF> </POLICY-REFERENCES> </META>
- содержание моей политики.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:info@YOURMAIL.de"> info@YOURMAIL.eu</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>
- содержание политики.спецификация 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">info@YOURMAIL.eu</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>
в рельсах я использую этот камень: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