nodejs如何在跳转到一个别的url之前给这个url加header?

我想要实现打开一个链接的时候直接下载的功能,默认打开链接会自动浏览器打开预览,请问nodejs可以在打开链接之前给该url加header吗?

exports.download = async (ctx,next) => {
    ctx.type = 'application/octet-stream'
    ctx.set('Content-Disposition','attachment;filename=name')//加下载的头
    ctx.redirect(ctx.request.query.path) //这个是准备要跳转的链接
}

目前我用的重定向,是不会加这个头的,
如果我把这个url用iframe形式写在一个路由里,则下载下来的就是该iframe标签的代码。

阅读 5.3k
1 个回答
  1. 解决问题的话,给<a>标签加download属性是最方便快捷无公害的;
  2. 重定向加了这个头也没用,Content-Type也没用,浏览器只认最终跳转目标的头。跟node无关,这是HTTP协议的锅。其实很好理解,跳转是可以跨域的,允许篡改请求头的话安全问题很大;
  3. 一定要改头的话,只能服务器代理;
  4. 不改头又想跨域的话,先配好CORS,然后fetch得到Blob,然后URL.createObjectURL,然后塞给href
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题