Установка файла cookie с помощью клиента webpack-dev-server и API-интерфейса hapi - PullRequest
0 голосов
/ 10 мая 2018

У меня есть клиент 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

...