Почему запросы iframe не отправляют файлы cookie?

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

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, вышеуказанная настройка работала отлично - каждый из фреймов отображал содержимое полезного_report.html ... еще несколько дней назад.

Когда я

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

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

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

Мой вопрос: почему запросы iframe не отправляют файлы cookie? Какие настройки / политики / директивы Chrome и / или сервера препятствуют этому?

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

somesite.com устанавливает SameSite в свой файл cookie? chromestatus.com/feature/4672634709082112

cody 18.12.2018 23:38

@cody Я просматриваю файл cookie, но не вижу атрибутов с таким именем (или похожими). Могу ли я увидеть атрибут SameSite в Инструментах разработчика?

Jeromy French 18.12.2018 23:43

да, вы бы увидели это как пару имя / значение в файле cookie в инструментах разработчика, например идентификатор сеанса или что-то еще ... вычеркните это из списка, я думаю

cody 18.12.2018 23:46

Можете ли вы быстро запустить локальный http-сервер, передать через него файл с iframe и посмотреть, имеет ли это значение?

cody 19.12.2018 00:13

@cody Да, разница есть; при размещении на somesite.com iframe scaffold.html загружают содержимое отчета (заголовки запроса включают файл cookie).

Jeromy French 20.12.2018 16:08

Привет, @JeromyFrench, не думаю, что это имеет какое-то отношение к content-security-policy. Есть ли причина, по которой вы добавили тег content-security-policy? У вас есть csp? если да, то без него работает?

Ankit Vijay 29.12.2018 22:42

@AnkitVijay Я подозреваю, что здесь задействован параметр политики безопасности контента (на основе того, что я прочитал, исследуя это, прежде чем опубликовать свой вопрос), но я достигаю. Я недостаточно знаю эту тему - как работает CSP - чтобы исключить это.

Jeromy French 02.01.2019 19:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
23
7
10 083
1

Ответы 1

Это из-за политики файлов cookie SameSite, что По умолчанию в Chrome используется Lax., что означает, что файлы cookie не будут отправлены, если пользователь не увидит URL-адрес, исключающий фреймы.

Если вы являетесь владельцем somesite.com, вы можете отказаться от этой политики, установив для политики SameSite значение None, и снизить риск CSRF-атак, выполнив Двойная отправка cookie.

Другие вопросы по теме