【发布时间】:2026-02-04 05:25:01
【问题描述】:
TL;DR
如何使用 Angular 和 JWT 身份验证下载/保存文件而不在浏览器中留下令牌痕迹?
我的 Angular/Node 应用程序通过 HTTPS 保护并使用 JWT 进行身份验证。 JWT 存储在 sessionStorage 中,并在 Authorization 标头字段中传递给服务器的所有 AJAX 请求。
我需要应用程序中的功能来下载文件,以便浏览器自动保存文件(或显示保存位置的弹出窗口等)。
它应该可以在任何可以运行 Angular 的浏览器中完美运行。
我看过以下内容:
AJAX 请求。这不起作用,因为固有的安全措施阻止浏览器在本地保存文件。
在 Cookie 中传递 JWT - Cookie 是我想避免使用的东西,因此是使用 sessionStorage 的原因。
在查询字符串中传递 JWT,但这意味着它将记录在服务器日志中,更重要的是可以在浏览器历史记录中看到。
包含 POST 数据的表单的 iframe。无法使用此方法设置标题。
还有其他选择吗?
【问题讨论】:
-
我认为答案可能在这里:Download file from express node.js with JWT authorization 即稍微修改服务器,使其在 auth 标头中期望 JWT,如果未找到则从正文中读取(备份之前使用查询字符串)。跨度>
标签: ajax angularjs node.js express jwt