【问题标题】:Download file from express node.js with JWT authorization使用 JWT 授权从 express node.js 下载文件
【发布时间】:2015-02-10 05:04:54
【问题描述】:

我在我的 node.js 服务器上使用 express-jwt 模块来授权用户访问不同的请求。其中一个请求最终将是使用 express res.download(file) 下载文件。

问题是我无法像通常通过 AJAX(角度 $http.get)那样执行请求,因为这不会触发浏览器中所需的文件下载弹出窗口。如果没有 AJAX(window.open),我无法为 express-jwt 提供必要的授权标头。

关于如何使用 express 和 jwt-express 从 node.js 实现我的授权文件下载的任何提示?

【问题讨论】:

  • 不久前我做了类似的事情,只是将 onClick 与 window.open 一起使用,它触发了 NodeJS Express 服务器的文件下载。如果你自己尝试会发生什么?
  • 问题是我需要在标题中添加一个令牌(jwt),因为下载是受保护的。
  • 这可能包含您的答案。似乎使用 XhtmlRequest 来加载带有自定义标头 stackoverflow.com/questions/10516463/… 的文件
  • 如上所述,我不能使用 Ajax,因为浏览器“另存为”对话框未显示,因此无法用于文件下载。
  • 这里不要引用我的安全问题。但是 google api 使用令牌作为查询字符串参数来做类似的事情......你可能会更多地研究这种方法。否则我不知道除了cookie认证之外的任何其他方式

标签: javascript angularjs node.js express


【解决方案1】:

一种可能的解决方案是修改您的服务器端以期望在标头中像以前一样,但如果没有此标头,请查看请求的参数以查看您要查找的值是否不存在反而。它不会改变您之前对其他端点的行为,但它允许您下载带有 window.open 和 url 中的参数的文件。您还可以将这种可能性限制为提供文件访问权限的端点以提高安全性。

【讨论】:

  • 是的,我想使用 get 参数是我最好的选择。
  • 如果您没有找到更好的答案,您能验证我的答案吗?谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2019-09-16
  • 2019-05-05
  • 1970-01-01
  • 2019-12-11
  • 2020-06-22
  • 1970-01-01
相关资源
最近更新 更多