Могут ли файлы cookie пересекать домены? Как это настроить?

Вывод первый:

Как правило, файлы cookie не разрешены в разных доменах. Но междоменность может быть достигнута через настройки.

Сначала установите заголовок ответа на стороне сервера:

Access-Control-Allow-Credentials: true ( установите значение «Разрешить междоменным запросам передавать информацию аутентификации» равным true )

Access-Control-Allow-Origin: Запросить доменное имя ( настроить доменное имя, к которому разрешен доступ )

Затем настройте withCredentials на клиенте, чтобы разрешить совместное использование файлов cookie , чтобы можно было обеспечить междоменный доступ к файлам cookie.

Конкретный анализ: 

Под одним и тем же доменным именем файлы cookie могут использоваться разными страницами; под разными доменными именами файлы cookie не могут использоваться по умолчанию.

Файлы cookie HTTP обычно связаны с определенным доменом. Таким образом, в обычных обстоятельствах файлы cookie не могут пересекать домены.

Однако при соответствующих настройках файлы cookie могут передаваться в междоменных запросах при определенных обстоятельствах.

Политика одного и того же происхождения . По умолчанию браузеры следуют политике одного и того же происхождения и не разрешают междоменным запросам передавать файлы cookie.

То есть при отправке междоменного запроса браузер не будет отправлять на сервер cookie соответствующего домена. Это сделано для того, чтобы вредоносные веб-сайты не могли получить информацию о пользователях на других веб-сайтах. Но в некоторых особых случаях нам может потребоваться перенести файлы cookie между доменами.

Установить файлы cookie и разрешить междоменный доступ можно следующим образом:

① Сервер устанавливает заголовок ответа:

Access-Control-Allow-Credentials: true (Учетные данные разрешения контроля доступа)

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

Access-Control-Allow-Origin: запрос доменного имени (разрешенный источник контроля доступа)

Укажите имя домена, к которому разрешен доступ. Указывает, что запросам под этим доменным именем разрешен доступ к ресурсам, а не только запросам под тем же доменным именем.

Сертификат полномочий; сертификат /krəˈdenʃlz/

Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Credentials: true

②Установить с помощью Credentials в запросе клиента.

Учетные данные: параметр include должен быть установлен во внешнем запросе, чтобы разрешить отправку файлов cookie , и должен использоваться вместе с Access-Control-Allow-Credentials в заголовке ответа. 

Для междоменных запросов клиенту необходимо явно указать файл cookie, который можно установить с помощью атрибута учетных данных объекта XMLHttpRequest или Fetch API.

fetch('http://api.example.com/data', {
  credentials: 'include',
  headers: {
    'Content-Type': 'application/json'
  }
})

В приведенном выше коде учетные данные в запросе на выборку включены, а для Access-Control-Allow-Credentials в заголовке ответа установлено значение true, чтобы можно было обеспечить междоменный доступ к файлам cookie.

Следует отметить, что настройки междоменных файлов cookie можно установить только в ответе, а не в запросе.

Guess you like

Origin blog.csdn.net/qq_38290251/article/details/134321697