我有 2 个不同的网络应用程序(app1 和 app2)。
每个都有自己的域。
App1请求app2的API取回JWT。工作正常。
然后我需要一种方法来打开一个带有app2的url的新选项卡并传递JWT,以便app2可以将JWT存储到本地存储中,并显示数据。
我尝试将其传递到标头中,但我面临 CORS 错误。
似乎使用 IFrame 也会产生 CORS 问题。
我可以将 JWT 传递到 URL 查询参数中,但我读过不推荐这样做。
你能帮我找到解决这个问题的方法吗?
正如您所观察到的,由于 CORS,您无法立即在浏览器中执行此操作。
将其作为 GET 参数传递可以,但也不是很安全。
因此,您需要按照您最初的计划将其传递到标头中。但是,根据您的情况,打开新选项卡时,您会遇到 CORS 问题。
因此,您可以这样做:
在这种情况下,您不会遇到 CORS,因为打开的新选项卡 app1 将加载 app1 页面,并且该页面将有效重定向到 app2。
一个小观察:
如何处理 JWT 由您决定,但我建议不要将 JWT 存储在
localStorage
中,以减少泄漏的机会。相反,我通常会通过 JWT 创建与 app2 的会话。