将 JWT 传递到 http 标头中,并使用来自另一个域的 url(和标头)打开另一个选项卡

问题描述 投票:0回答:1

我有 2 个不同的网络应用程序(app1 和 app2)。

每个都有自己的域。

App1请求app2的API取回JWT。工作正常。

然后我需要一种方法来打开一个带有app2的url的新选项卡并传递JWT,以便app2可以将JWT存储到本地存储中,并显示数据。

我尝试将其传递到标头中,但我面临 CORS 错误。

似乎使用 IFrame 也会产生 CORS 问题。

我可以将 JWT 传递到 URL 查询参数中,但我读过不推荐这样做。

你能帮我找到解决这个问题的方法吗?

browser jwt cors header
1个回答
0
投票

正如您所观察到的,由于 CORS,您无法立即在浏览器中执行此操作。

将其作为 GET 参数传递可以,但也不是很安全。

因此,您需要按照您最初的计划将其传递到标头中。但是,根据您的情况,打开新选项卡时,您会遇到 CORS 问题。

因此,您可以这样做:

  • app1 请求 app2 取回 CORS
  • app1 打开一个新选项卡,将 url 传递给 app1
  • app1 上的此页面重定向到 app2 并在标头中传递 JWT

在这种情况下,您不会遇到 CORS,因为打开的新选项卡 app1 将加载 app1 页面,并且该页面将有效重定向到 app2。


一个小观察:

如何处理 JWT 由您决定,但我建议不要将 JWT 存储在

localStorage
中,以减少泄漏的机会。相反,我通常会通过 JWT 创建与 app2 的会话。

© www.soinside.com 2019 - 2024. All rights reserved.