首页 > 解决方案 > 在 set-cookie 响应标头中接收到非 httpOnly cookie,但 js 无法访问

问题描述

我的后端部署在 heroku 上。我的前端仍在本地。我正在设置 2 个 cookie,一个是 httpOnly,另一个是非 httpOnly。问题是后端无法在我的本地设置 cookie。我尝试使用本地后端。我也将 sameSite cookie 属性设置为 None 和 Secure 标志。当我从 youtube 或 StackOverflow 页面上的控制台调用 API 时(只是为了使其跨域),我可以看到 set-cookie 标头在响应中包含这 2 个 cookie。我正在使用 cookie 扩展 EditThisCookie。我既无法在扩展程序中看到这些 cookie,也无法通过 js 访问它们。我知道 httpOnly cookie 无论如何都无法通过 js 访问,但即使是非 httpOnly 也无法访问。但是在 chrome 开发工具的应用程序选项卡中,我可以看到两个 cookie。此外,httpOnly cookie 应该在后续调用中传输,这不会发生以及如果 cookie 尚未真正设置。我也试过设置这些响应头

Response.Headers.Add("Access-Control-Allow-Origin", "https://www.stackoverflow.com/");
Response.Headers.Add("Access-Control-Allow-Credentials", "true");
Response.Headers.Add("Access-Control-Expose-Headers", "Set-Cookie");

这是在 dotnet 核心中。如何访问后端发送的 cookie?我只想在 HTTP 响应中发送 cookie。这基本上是用于登录 API。我需要在登录 API 的发布请求中添加一些内容吗?我还尝试将 cookie 的域属性设置为“StackOverflow.com”,但没有奏效。这反而给了一个错误。“这种通过 set-cookie 标头设置 cookie 的尝试被阻止,因为它的域属性对于当前主机 URL 无效”此外,这在前端和后端在不同端口上的本地工作时都可以正常工作

标签: cookiescookie-httponly

解决方案


推荐阅读