Содержимое Iframe не использует родительские файлы cookie при использовании srcdoc в Firefox, работает в Chrome

#firefox #cookies #iframe

#firefox #файлы cookie #iframe

Вопрос:

У меня есть такая структура html

 <html>
   <body>
     <iframe srcdoc="HTMLDOC"></iframe>
   <body>
</html>
 

где HTMLDOC — это документ HTML, в котором есть некоторые <img> теги, отображающие изображения на моем сервере, для просмотра которых пользователь должен пройти проверку подлинности.

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

Если я преобразовываю iframe в «классический» iframe, например:

 <iframe src="URL INSIDE MY SERVER"></iframe>
 

где URL ВНУТРИ МОЕГО СЕРВЕРА является конечной точкой, которая обслуживает тот же HTMLDOC, он работает как в Chrome, так и в Firefox, отправляя соответствующие файлы cookie в запросах на получение изображений.

Я также пытался добавить параметр sandbox="allow-same-origin allow-top-navigation allow-scripts" в iframe с помощью srcdoc, но безрезультатно.

Что странно, так это то, что если это ситуация с тем же источником, я не могу придумать более четкого того же происхождения, что и страница в самом HTML, поэтому я не знаю, не упускаю ли я что-то.

Комментарии:

1. Вы нашли решение для этого? Сейчас я столкнулся с той же проблемой. кажется настолько глупым, что такого рода настройки не имеют одинакового происхождения

Ответ №1:

Я не уверен, есть ли различия в реализации между Chrome и Firefox, но я использую некоторые манипуляции с DOM, чтобы обойти эту проблему:

 <html>
  <body>
    <iframe onload="fillIframe(this);"></iframe>
  </body>
</html>

<script type="text/javascript">
  function fillIframe(o) {
    o.contentWindow.document.body.innerHTML = "HTMLDOC";
  }
</script>