IE, P3P, IFrame и заблокированные куки-файлы (работает до тех пор, пока на странице хоста не будет запрошена личная информация)

У моей компании есть маленький виджет, который подключается к корзинам. Мы столкнулись с проблемой, когда настройка файлов cookie в IE7 не работает. Это происходит потому, что мы являемся третьей стороной, потому что мы встроены в сайт через iframe.

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

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

Я подтвердил, что моя политика P3P находится в моем заголовке HTTP. И на самом деле это работает для первой страницы / шага сайта корзины покупок, но как только на странице появляется личная информация (например, имя, адрес, телефон и т. Д.), IE блокирует мой сайт и мой файл cookie.

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

Я в полной растерянности.

Ответы на вопрос(7)

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

 Shoban17 июн. 2009 г., 06:23
Ищите панель инструментов Webdeveloper для FF, и вы ее получите. Это обязательный инструмент для веб-разработчиков. Это определенно проблема с вашим p3p заголовком. В панели инструментов веб-разработчика есть возможность проверить заголовки p3p, поэтому используйте его. Так я решил свою проблему. Я знаю, что вы чувствуете, потому что я стоял за этой проблемой в течение недели ;-) не стесняйтесь, напишите мне на shobankr [at] gmail.com, и я буду рад помочь. Кстати, Шобан - мое имя, а не шобаб ;-)
 Shoban16 июн. 2009 г., 18:27
Ok..Измените настройки конфиденциальности в ie, а затем протестируйте его с низким уровнем безопасности. Если это работает, то проблема связана с вашим исходным кодом. Вы также можете использовать FF с панелью инструментов веб-безопасности. Измените настройки конфиденциальности и используйте панель инструментов веб-разработчика, чтобы увидеть, что происходит с файлом cookie.
 David16 июн. 2009 г., 17:43
Спасибо за подсказку. Однако я убедился, что заголовок p3p существует для всего контента, который я обслуживаю. (Я использовал ieHTTPHeaders)
 David19 июн. 2009 г., 00:24
Еще раз спасибо, Шобан. Я не могу найти валидатор для p3p заголовков. Я могу использовать панель инструментов веб-разработчика (v 1.1.6), чтобы увидеть мой p3p-заголовок, но я не вижу ничего, что могло бы его подтвердить.
 David16 июн. 2009 г., 22:16
Шобаб, спасибо за подсказки. Я снизил свою безопасность в IE, и он изменил статус файлов cookie моего сайта с «заблокирован» на «ограничен». Это сработало для меня. Ограниченный достаточно хорош. Я не уверен, что проблема может быть с моим исходным кодом - может быть, моя политика p3p недостаточно хороша? Где я могу найти панель инструментов веб-безопасности FF? Было бы здорово найти что-то, что скажет мне, почему моя политика p3p недостаточно хороша.

и я решил использовать подход Google / Facebook и подделать заголовок P3P. У меня действительно были некоторые проблемы, хотя.

Сначала вы должны убедиться, что передаете этот заголовок с помощью ALL.Если вы используете веб-сервер разработки Visual Studio, заголовок P3P по какой-то причине будет игнорироваться. Итак, разместите ваше приложение в IIS.

Проблема 1:

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

 protected void Application_BeginRequest(Object sender, EventArgs e) {
            //
            HttpContext.Current.Response.AddHeader("P3P", "CP=\"This is not a P3P policy! See http://mydomain.com/privacy-policy for more info.\"");
        }

Проблема 2:

Довольно понятно. Разместите свой проект в IIS.

Я принял решение обойти P3P, когда узнал, что W3C не работал и не обновлял стандарт с 2006 года. Для меня это означает, что он мертв, и у нас просто есть основной браузер, поддерживающий мертвый стандарт. Проект был моим, я был / я клиент. Поэтому, если вы планируете совершать те же действия и не пишете что-то для себя, посоветуйтесь с силами, которые будут.

Ура!

вероятно, больше никому не поможет, но я несколько недель стучал головой об стену из-за этого. Оказывается, что IE 7 не позволит устанавливать сторонние файлы cookie, даже с действующей компактной политикой P3P, если метатег HTML для Content-Type имеет другое объявление набора символов на странице с iframe со страницы внутри фрейм

 Erik Reppen22 авг. 2013 г., 22:06
Это дало мне надежду на пару минут. : D

expires=Fri, 19-Dec-14 18:00:40 GMT и нетmax-age.

Этоконтролируется в Apache mod_usertrack по конфигуCookieStyle=Netscape

ьность» на ответе, который декодирует токены P3P в их значения. Внизу инспектора есть ссылка, которая указывает на статью MSDN, в которой показано, какие политики считаются «приемлемыми» по умолчанию.

Обратите внимание, конечно, что политики P3P являются юридической декларацией, поэтому вы должны быть уверены, что использование вами файлов cookie соответствует тому, что вы заявляете в P3P.

 Tom Lianza23 окт. 2009 г., 00:09
Ссылка внизу Fiddler приведет вас на эту страницу, которая описывает только приемлемые политики для IE6:msdn.microsoft.com/en-us/library/... Кто-нибудь знает более свежую ссылку?
 Oskar Austegard11 дек. 2012 г., 22:09
@EricLaw: Ваш ответ, конечно, древний, но была ли удалена вкладка инспектора конфиденциальности из Fiddler? Я использую Fiddler 4 (все еще помеченный как fiddler2 - v4.4.2.1 beta) и не вижу его нигде (и не помню, чтобы видел его в предыдущих версиях)
 EricLaw23 окт. 2009 г., 16:09
Значения по умолчанию P3P не изменились с IE6.

о которой следует знать: при запросе 304 («Не изменен») внутри фрейма заголовок P3P не будет отправляться веб-сервером в соответствии с RFC (если только вы не используете IIS, который не заботится о таких вещах). IE7 будет на самом делеудалять любой файл cookie, установленный во время этого конкретного запроса.

Это будет иметь эффект, который вы описали выше, так что, возможно, это то, что происходит. IE6 и IE8 (и любой другой браузер) работают как положено.

 JW.18 мая 2012 г., 06:44
Похоже, это влияет и на IE8.

описанной выше, с 304 запросами (кэшированное содержимое). Наш балансировщик нагрузки устанавливал cookie-файл сеанса, но веб-сервер Apache не включал заголовок P3P для запросов, которые привели к коду результата 304. Таким образом, информация о сессии будет испорчена.

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

Ваш ответ на вопрос