Настройка файлов cookie, чтение и автоматический перенос

внешний интерфейс GitHub Ajax axios

Оригинальный адрес:GitHub.com/Yunxin630/Нет…
Технологии обмена:fiora.suisuijiang.com/

Эта статья ответит на следующие вопросы:

  1. Могу ли я установить или прочитать файлы cookie для субдоменов?
  2. В чем разница между установкой файла cookie на клиенте и установкой файла cookie на сервере?
  3. Будут ли однодоменные/междоменные 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.comcookie, а также принести 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})

GitHub.com/ax iOS/ax iOS…

Настройка jQuery с учетными данными

$.ajax({
    method: 'get',
    url: 'http://server.com',
    xhrFields: {
        withCredentials: true
    }
})

Особенно Aliyun.com/articles/61…