【发布时间】:2017-08-15 13:24:37
【问题描述】:
我有一个带有 Web Api 后端的 SPA。 api 调用在标头中使用 JWT 进行身份验证。我要解决的问题是如何不使用 XHR 而是使用 window.open 进行特定的 api 调用。我通过在调用之前将令牌保存到 cookie 并创建一个中间件来解决这个问题,该中间件仅针对一条路由截取该 cookie 并将其放入标头中。这样 JWT auth 中间件就可以做它的事情。这个 Api 调用是一个 GET 路由,所以我不关心 XSR 问题。
这个“hack”还有其他陷阱吗?
一点背景: api 调用正在发回一个 pdf 流。我可以在新标签中打开它,没问题。但后来我面临各种特定于浏览器的问题——Edge/IE 不允许打开 blob; Chrome、Safari 需要一个允许弹出窗口的设置......并且有可能出现 AdBlock。 FileSaver.js 也提供弹出窗口阻止功能。另一方面,只要打开一个 URL 就可以在任何地方使用,没有例外。对于观众(主要是计算机文盲),我的目标是这似乎是最好的解决方案。
【问题讨论】:
标签: authentication cookies web jwt