会话 cookie 在 Postman 中成功运行,而不是 Chrome
Posted
技术标签:
【中文标题】会话 cookie 在 Postman 中成功运行,而不是 Chrome【英文标题】:Session cookies working successfully in Postman, not Chrome 【发布时间】:2021-10-20 10:26:00 【问题描述】:这是我第一次弄乱会话 cookie,我过得很艰难。非常感谢任何帮助!
我想说明:
我在本地 Chrome 上遇到了所有这些问题 我完全没有问题接收 cookie 并使用 Postman 验证请求。是 Chrome 没有设置 cookie。服务器
我的服务器在 http://localhost:7000/ 上运行
我通过像这样设置 Set-Cookie
标头从服务器向客户端发送 cookie:
val cookie = """jwt=$token; Path=/; Domain=localhost; Max-Age=86400; Expires=Thu, 19 Aug 2021 12:20:23 GMT; SameSite=Strict;"""
ctx.header("Set-Cookie", cookie)
我也设置了 cors:
it.header(Header.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true")
it.header(Header.ACCESS_CONTROL_ALLOW_METHODS, "*")
it.header(Header.ACCESS_CONTROL_ALLOW_HEADERS, "*")
前端
我的 F.E 在 http://localhost:3000/ 上运行
以下是身份验证请求/响应的样子:
这是其中一个失败的请求的样子。请注意如何没有设置 cookie:
我还注意到 cookie 没有出现在 Chrome 的 Cookies in use
视图中:
我的理解
据我了解,我可以使用SameSite=Strict
,因为 FE 和 BE 都在 localhost 上本地运行。
当我投入生产时,FE 和 BE 将不在同一个域中。然后,我必须使用SameSite=None; Strict
。这是正确的吗?
另外,我知道我也可以包含 HttpOnly
,但我目前不是出于调试目的。
我的理解正确吗?
谢谢!
提前感谢您提供的任何帮助,非常感谢!
【问题讨论】:
【参考方案1】:我建议您尝试将允许来源设置为 * 并检查结果:
访问控制允许来源:*
它将允许来自任何地址的请求,虽然不安全,但可以帮助您找到问题的根源
【讨论】:
您好二凡,感谢您的回复。我在a few places cmets 中看到过关于不允许来源如何设置为*
,但我只是出于测试目的尝试过:
GET /api/transfers?limit=5&offset=0 HTTP/1.1 Host: localhost:7000 Connection: keep-alive sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92" accept: application/json DNT: 1 sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/92.0.4515.159 Safari/537.36 credentials: include Origin: http://localhost:3000 Sec-Fetch-Site: same-site Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: http://localhost:3000/ Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9
【参考方案2】:
我没有正确设置credentials: include
?
【讨论】:
以上是关于会话 cookie 在 Postman 中成功运行,而不是 Chrome的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Postman 在我的 React 应用程序中接收到 express 会话 cookie 而不是我的 post 请求
postman 获取登录成功后存在在header中cookies,并在下一个接口中使用。