У меня есть клиент ReactJS, работающий с webpack-dev-server на localhost:3000
. Он подключается к серверу Hapi API на localhost:8080
, и я пытаюсь предоставить базовый файл cookie, используя hapi-auth-jwt2
(я также пробовал hapi-auth-cookie
с равными результатами).
Я вижу, что заголовок ответа содержит действительный заголовок set-cookie
, и все выглядит хорошо, но все мои тесты браузера игнорируют его, и cookie никогда не устанавливается (проверяется проверкой document.cookie
и использованием инструментов браузера, таких как вкладка Приложения Chrome ). Когда я подключаюсь напрямую к API-серверу с помощью Postman, он правильно берет заголовок set-cookie
и сохраняет его, так что я думаю, что это просто какая-то проблема конфигурации домена / порта / хоста.
В качестве простого теста я попытался выполнить развертывание в нашей среде ec2, но это не помогло. Среда ec2 похожа, один экземпляр обслуживает клиента, а другой - API. Я также попытался изменить свой локальный файл hosts
, чтобы перенаправить домен, например 127.0.0.1 example.com
, и предоставить поле domain=.example.com
в файле cookie, но это также не помогло.
Я думаю, что мне просто не хватает чего-то простого, но я не знаю, что это такое. Ниже приведены заголовки ответа / запроса при входе в систему.
Заголовки запроса
POST /login HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 47
Accept: application/json, text/plain, */*
Origin: http://localhost:3000
Authorization: undefined
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36
Content-Type: application/json
Referer: http://localhost:3000/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Заголовки ответа
HTTP/1.1 200 OK
authorization: <jwt token>
vary: origin,accept-encoding
access-control-allow-origin: http://localhost:3000
access-control-allow-credentials: true
access-control-expose-headers: WWW-Authenticate,Server-Authorization
content-type: application/json; charset=utf-8
set-cookie: cookie=token; Max-Age=604800; Expires=Wed, 16 May 2018 21:11:23 GMT; SameSite=Lax; Path=/
cache-control: no-cache
content-encoding: gzip
Date: Wed, 09 May 2018 21:11:23 GMT
Connection: keep-alive
Transfer-Encoding: chunked