2

我有一个运行 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

4

1 回答 1

0

webpack-dev-server 使用的http-proxy-middleware具有 cookie 域/路径重写的选项

你应该看看那些是否满足你的需求。否则,您也可以在onProxyRes回调中手动解析和重置 cookie。是一个例子。

于 2020-08-28T09:12:43.633 回答