Вывод первый:
Как правило, файлы 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 можно установить только в ответе, а не в запросе.