会话 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,并在下一个接口中使用。

django:我们可以通过邮递员中的cookie通过会话ID并登录吗

postman

postman怎么清除cookie

为何请求头和请求参数相同,请求头带有cookie,postman可以成功请求,Python却失败?