【发布时间】:2021-04-30 03:40:41
【问题描述】:
我正在开发一个带有 angular + nebular auth 的网络应用程序。 Nebular 身份验证正在工作,我从我们的身份验证服务器获得了一个 JWT 令牌。身份验证服务器是用 Node 制作的,并且还为刷新令牌设置了一个 HTTPOnly cookie。我希望这个令牌随每个请求一起发送。 登录响应确实具有 Set-Cookie 标头,但从未设置 cookie。我在 Stack Overflow 中阅读了很多答案,但我尝试的一切都不起作用。
身份验证服务器位于云服务器中,而我正在本地开发应用程序。这可能已经是个问题了。
无论如何,这是我到目前为止所做的:
Node.js
我正在使用 HTTP 服务器,并使用 cookie-parser 设置 cookie:
res.cookie("refresh_token", token, {httpOnly: true, maxAge: ....});
我在 app.js 中这样设置核心选项:
app.use(cors({
credentials: true,
origin: ["http://localhost:4200", "http://127.0.0.1:4200"]
exposedHeaders = ["Content-Length", .....],
allowedHeaders = ["Content-Type", "Authorization", "Set-Cookie", ....],
}));
当我得到登录的响应时,我确实得到了 Set-Cookie 标头,但我在浏览器控制台的 Cookies 选项卡中看不到 cookie。
无论如何,我都尝试使用 { headers: headers, withCredentials: true } 从 Angular 发送请求,但显然当我在 Node 中检查 cookie 时什么都没有。
所以我快疯了……这可能是 CORS 的问题,因为我是从 localhost 开发的,并且服务器在云端?
我怎样才能做到这一点?
【问题讨论】:
-
您是否尝试在 https 而不是 http 上运行应用程序?我有一个类似的问题(虽然使用 .net 服务器)并在 https 上运行解决了它。
-
我目前在使用自签名证书的 HTTPS 中运行时遇到问题。我尝试的每个请求都会收到 ERR_CERT_AUTHORITY_INVALID
-
这是服务器和您的身份验证服务器之间的 b2b 请求吗?如果是这样,您可能需要确保您的服务器也信任自签名证书
-
嘿@GiammarcoBoscaro 你找到答案了吗?
-
@NikitasIO 是的,我做到了。我刚刚发布了答案
标签: node.js angular cookies cross-domain