我有一个运行 webpack-dev-server 的 ReactJS 客户端localhost:3000
。它连接到一个 Hapi API 服务器localhost:8080
,我正在尝试提供一个基本的 cookie 使用hapi-auth-jwt2
(我也尝试hapi-auth-cookie
过相同的结果)。
我可以看到响应标头提供了一个有效的set-cookie
标头,一切看起来都不错,但是我所有的浏览器测试都忽略了它,并且从未设置过 cookie(通过检查document.cookie
和使用 Chrome 的应用程序选项卡等浏览器工具进行验证)。当我使用 Postman 直接连接到 API 服务器时,它会set-cookie
正确获取标头并存储它,所以我认为这只是某种域/端口/主机配置问题。
作为一个简单的测试,我尝试部署到我们的 ec2 环境,但这并没有帮助。ec2 环境类似,一个实例为客户端提供服务,另一个实例为 API 提供服务。我还尝试修改我的本地hosts
文件以重定向一个域,127.0.0.1 example.com
并在 cookie 中提供该domain=.example.com
字段,但这也没有帮助。
我想我只是缺少一些基本的东西,但我不知道它是什么。有关登录时的响应/请求标头,请参见下文。
请求标头
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