Браузер не может читать и отправлять куки с fetch api, даже если учетные данные включены в запрос перекрестного источника - PullRequest
0 голосов
/ 24 декабря 2018

Извлечение запроса перекрестного источника, Chrome не может прочитать set-cookie, даже если я установил credentials: 'include', а сервер выдает:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://127.0.0.1:3000

chrome

safari

Это реактивный (^ 16.6.3) проект с fetch api

Я пробовал Chrome, Safari, Firefox и мобильные браузеры, но все эти браузерыне могу читать и сохранять куки.В Chrome нет поля Set-Cookie, но есть в Safari и Firefox.

empty cookies

И когда я использую почтальон для проверкивсе будет нормально, следующий запрос отправит куки.

fetch('http://API_ROOT/api', {
  credentials: 'include',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json; charset=utf-8',
  },
  method: 'POST',
  body: JSON.stringify({})
});

Ожидаем, что браузер сохранит и отправит куки.

1 Ответ

0 голосов
/ 24 декабря 2018

Многие другие советы всегда говорят: установить учетные данные: 'включает' и значение на стороне сервера Access-Control-Allow-Credentials, равное true .Но я проверил, что ваш код и ответ в порядке.

Так, может быть, срок действия файла cookie истек?

Или, возможно, ваш браузер отключил сторонние файлы cookie?

withCredentials MDN

Сторонние файлы cookie

Обратите внимание, что файлы cookie, установленные в ответах CORS, подчиняются обычным политикам сторонних файлов cookie.В приведенном выше примере страница загружается из foo.example, но cookie в строке 22 отправляется bar.other, и, следовательно, он не будет сохранен, если пользователь настроил свой браузер так, чтобы он отклонял все сторонние cookie.

...