Подтвердить что ты не робот

Почему заголовок set-cookie игнорируется браузером и файлы cookie, не сохраненные при вызове Ajax с использованием fetch?

По какой-то причине мой браузер (я пробовал несколько) не устанавливает файлы cookie, даже если действительный ответ set-cookie возвращается сервером, когда GET-вызов выполняется через Ajax с помощью fetch api, чтобы сделать запрос

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

Я проверил заголовки запросов и ответов через LiveHeaders и инспектор сети Chrome, и нет никакой разницы.

EDIT: Чтобы уточнить, это НЕ является проблемой при отправке файлов cookie ajax на сервер. Это проблема, когда файлы cookie не сохраняются браузером вообще, когда ответ возвращается с действительными заголовками set-cookies (которые в соответствии с документацией должны соблюдаться как ajax, так и нет).

4b9b3361

Ответ 1

После долгих ударов по голове я решил эту проблему, установив свойство "credentials" запроса "include". У меня создалось впечатление, что это контролировало только отправку файлов cookie на сервер при запросах на выборку, но, по-видимому, по крайней мере, в реализации, которую я использую, если она не установлена, это также означает, что файлы cookie не будут сохранены, если они будут отправлены обратно из сервера.

Из спецификации в https://fetch.spec.whatwg.org/

Запрос имеет связанный с ним режим учетных данных, который "опускает", "то же самое происхождение", или "включить". Если не указано иное, это "опустить".

Режим запроса учетных данных управляет потоком учетных данных во время выборки. Когда режим запроса "navigate", его учетные данные предполагается, что это "включить", и выборка в настоящее время не учитывает другие значения. Если HTML изменяется здесь, этот стандарт будет изменения.

Учетные данные: HTTP файлы cookie, сертификаты клиентов TLS и записи аутентификации.