Браузер не будет хранить куки

Я использую угловой 4 клиент на localhost:3000, который взаимодействует с WEB API localhost:5000. Моя проблема в том, что я не могу понять, почему браузер отказывается хранить cookie, когда сервер дает ему указание сделать это.

Заголовки клиентских запросов

Request URL:https://local.dev:5000/user/list?page=1&column=Email&listOrder=2
Request Method:POST
Status Code:200 OK
Remote Address:127.0.0.1:5000
Referrer Policy:no-referrer-when-downgrade
Accept:application/json
Accept-Encoding:gzip, deflate, br
Accept-Language:en-NZ,en-GB;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Content-Length:0
Content-Type:application/json
DNT:1
Host:local.dev:5000
Origin:https://localhost:3000
Pragma:no-cache
Referer:https://localhost:3000/user

Заголовки ответа сервера:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:https://localhost:3000
Cache-Control:no-cache
Content-Type:application/json; charset=utf-8
credentials:include
Date:Tue, 09 May 2017 08:22:25 GMT
Expires:-1
Pragma:no-cache
Server:Kestrel
Set-Cookie: <cookiename>=<somedata>; expires=Tue, 09 May 2017 09:22:23 GMT; domain=local.dev; path=/; secure; httponly
Transfer-Encoding:chunked
Vary:Origin
withCredentials:true

Как видите, CORS также включен. HTTPS используется для передачи. Также пробовал без установки срока годности. Домен cookie установлен на local.dev, Я тоже пробовал с / а также localhost,

После этого в представлении отладки Chrome файл cookie не отображается. Просто какой-то угловой файл cookie по умолчанию. Поэтому я предполагаю, что заголовок set-cookie по какой-то причине игнорируется.

Chrome Debug View. печенье не хранится

ПОМОГИТЕ!

1 ответ

Решение

Для междоменных запросов AJAX необходимо явно указать, что файлы cookie должны отправляться вместе с запросом и приниматься в ответе.

Это делается с помощью withCredentials флаг объекта XMLHttpRequest.

В Angular вы можете установить его как опцию $http сервис, см. также AngularJS withCredentials

Другие вопросы по тегам