Прежде всего, я провел некоторое исследование, прежде чем публиковать этот вопрос, поэтому я знаю о политике P3P и статья MSDN об этом. Насколько я понимаю, эта политика в основном (если не только) относится к IE6. Моя проблема связана с IE9. Кроме того, первое, что я сделал, это настроить политику (и она работает, поскольку она показывает сводку в отчете конфиденциальности IE).
Мой тестовый пример выглядит следующим образом: у меня есть страница, содержащая iframe. Документ iframe устанавливает cookie сеанса (полный HTTP-заголовок: Set-Cookie:sid=2b5540e0e4f27075ca4709851700137d; expires=Tue, 28-Jun-2011 07:27:41 GMT; path=/
) для текущего домена на корневом пути, срок действия которого истекает через неделю. Там нет проблем, это уже некоторое время работает на производстве (автономно, а не в iframe).
Проблема заключается в следующем: в документе iframe есть некоторый javascript, который сначала обрабатывает некоторые HTTP-запросы (выполняется jQuery), затем перенаправляет пользователя (путем изменения свойства document.location
). Запросы do отправляют файлы cookie, но перенаправление не.
Я захватил сетевые события в IE, и единственным отличием между двумя типами запросов, которые я могу найти, является инициатор: XHR выполняется библиотекой JS, а другой - кликом. Однако я действительно сомневаюсь, что клик не отправит файл cookie.
Я хочу знать, почему мои файлы cookie не отправлены, куки Google Analytics отправляются, поэтому это должно быть возможно.
UPDATE: Это определенно проблема зоны конфиденциальности: при снижении настроек конфиденциальности в IE для всех это работает. Невозможно выполнить другие настройки.
Я создал точный тестовый стенд: Это фактический iframe, который используется. Чтобы протестировать его, вы должны заполнить голландский почтовый индекс (извините;)), используемое местозаполнение в порядке: 1234 AB и 1. После отправки вы получите модальный код, когда это будет сделано, вы должны быть перенаправлены на страницу результатов. В IE перенаправление показывает точно ту же страницу, с которой вы начали (из-за того, что вы не устанавливаете файл cookie).