Cookie заблокирован / не сохранен в IFRAME в Internet Explorer - PullRequest
389 голосов
/ 23 декабря 2008

У меня есть два веб-сайта, скажем, они 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, файлы cookie для example.com не сохраняются. В Firefox эта проблема не появляется.

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

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

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

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

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

Ответы [ 22 ]

0 голосов
/ 16 апреля 2014

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

Его легко установить, если вам вообще не важно значение p3p.

0 голосов
/ 07 января 2009

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

...