Оригинальный адрес:GitHub.com/Yunxin630/Нет…
Технологии обмена:fiora.suisuijiang.com/
Эта статья ответит на следующие вопросы:
- Могу ли я установить или прочитать файлы cookie для субдоменов?
- В чем разница между установкой файла cookie на клиенте и установкой файла cookie на сервере?
- Будут ли однодоменные/междоменные ajax-запросы приносить файлы cookie?
Могу ли я установить или прочитать файлы cookie для субдоменов?
Нет! Файлы cookie можно настроить только для текущего домена или доменов более высокого уровня.
Напримерclient.com
неa.client.com
установить cookie, аa.client.com
кclient.com
установить куки
Читать файлы cookie, как указано выше.
В чем разница между установкой файла cookie на клиенте и установкой файла cookie на сервере?
И клиент, и сервер могут устанавливать файлы cookie только для своего собственного домена или доменов более высокого уровня.
Напримерclient.com
неserver.com
установить куки, то же самоеserver.com
ни кclient.com
установить куки
Сервер можно установитьhttpOnly: true
, файл cookie с этим атрибутом не может быть прочитан клиентом
Клиент будет получать файлы cookie только из того же домена, что и запрос, напримерclient.com/index.html
принесуclient.com
печенье,server.com/app.js
принесуserver.com
cookie, а также принести httpOnly cookie
Однако, если это ajax-запрос к серверу, cookie не будет доставлен, подробности см. в третьем вопросе.
Будут ли однодоменные/междоменные ajax-запросы приносить файлы cookie?
Проблема связана с тем, как вы делаете запрос ajax
По умолчанию fetch не будет приносить файлы cookie, независимо от того, является ли это запросом ajax для одного домена или между доменами, только если он установленcredentials
Когда cookie домена, на котором находится ajax-запрос, будет доставлен, серверу необходимо установить заголовок ответаAccess-Control-Allow-Credentials: true
, иначе браузер сообщит об ошибке из-за ограничений безопасности и не получит ответа
Axios и jQuery будут приносить файлы cookie при запросе ajax в том же домене, но не в междоменных запросах.withCredentials
и заголовки ответа сервера
получить установленные учетные данные
By default, fetch won't send or receive any cookies from the server, resulting in unauthenticated requests if the site relies on maintaining a user session (to send cookies, the credentials init option must be set). Since Aug 25, 2017. The spec changed the default credentials policy to same-origin. Firefox changed since 61.0b13.
Заставить принести куки
fetch(url, {
credentials: "include", // include, same-origin, omit
})
- включить: междоменный ajax с файлами cookie
- тот же-происхождение: только тот же домен ajax приносит куки
- опустить: никаких файлов cookie в любом случае
developer.Mozilla.org/en-US/docs/…
набор axios с учетными данными
//
withCredentials
indicates whether or not cross-site Access-Control requests, should be made using credentials // default: withCredentials: false
заставить axios приносить куки
axios.get('http://server.com', {withCredentials: true})
Настройка jQuery с учетными данными
$.ajax({
method: 'get',
url: 'http://server.com',
xhrFields: {
withCredentials: true
}
})