Почему запросы iframe не отправляют файлы cookie? - PullRequest
0 голосов
/ 19 декабря 2018

Отдел одного брата создал файл HTML, который фактически является основой для нескольких iframes.Каждый iframes вызывает отчет, размещенный на веб-сервере, с немного отличающимися параметрами.В вызываемом отчете будет показана форма входа для неаутентифицированных пользователей или содержимое отчета для уже аутентифицированных пользователей.

scaffold.html:

<html>
   <head>
      <title>I just show the output from a bunch of report calls</title>
   </head>
   <body>
      <iframe src="https://somesite.com/useful_report.html?parameter1=a&parameter2=1" id="iframe1"></iframe>
      <iframe src="https://somesite.com/useful_report.html?parameter1=b&parameter2=2" id="iframe2"></iframe>
      <iframe src="https://somesite.com/useful_report.html?parameter1=c&parameter2=3" id="iframe3"></iframe>
      <iframe src="https://somesite.com/useful_report.html?parameter1=d&parameter2=4" id="iframe4"></iframe>
   </body>
</html>

Организация-брат объяснила нам, чтоесли бы пользователь выполнил вход в https://somesite.com,, вышеприведенные настройки работали отлично - каждый из iframes отображал бы текст полезного_порта.html ... до нескольких дней назад.

Когда я

  1. войдите в https://somesite.com,, а затем
  2. загрузите файл: /// C: /Users/me/Desktop/scaffold.html в Chrome

каждый из фреймов возвращает знак https://somesite.com в форме.Если затем открыть полезный_репорт.html на отдельной вкладке, содержимое отчета загружается (доказывая, что somesite.com знает, что я все еще подписан на ‡).

Используя инструменты разработчика, я вижу, что запрос заголовков полезен_порту.html не включает атрибут «Cookie:», поэтому это объясняет, почему полезно_report.html возвращает знак в форме.

У меня вопрос , почему запросы iframe не отправляют куки? Что такое Chromeи / или настройка сервера / политика / директива препятствует этому?

‡ - и теперь он знает, что я знаю, что он знает.

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы хотите использовать нативный ajax или jquery ajax, то удалите async: false.это сработало для меня.

Для дальнейшей совместимости с более старыми браузерами я рекомендую использовать http://easyxdm.net/wp/. Подход EasyXDM заключается в использовании хакера iframe, который требует от вас размещения html-файла на создаваемом вами хосте.Аякс звонит.И это будет принудительно асинхронно, да.Но что хорошо с этим easyXDM, так это то, что вам не придется беспокоиться о заголовках cors.

...