我想要实现打开一个链接的时候直接下载的功能,默认打开链接会自动浏览器打开预览,请问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标签的代码。
<a>
标签加download
属性是最方便快捷无公害的;Content-Type
也没用,浏览器只认最终跳转目标的头。跟node无关,这是HTTP协议的锅。其实很好理解,跳转是可以跨域的,允许篡改请求头的话安全问题很大;fetch
得到Blob,然后URL.createObjectURL
,然后塞给href
。