请教一个下载会跳转链接的问题

请教一下,拿到了一个链接,,302跳转后才是可以下载的文件,如何在js中实现点击下载这个链接跳转后的文件。 常规写法无效,如下:

var filename = "a.mp4";
let link = document.createElement('a')
document.body.appendChild(link)
 link.style.display = 'none'
link.href = http://aaa/bbb
link.download = filename
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(blobUrl);          

因为href 带的是会302的链接,索引上述实现只会在当前页面打开mp4文件。
如何能实现直接打开另存为的窗口,下载跳转后的文件呢?

阅读 3k
2 个回答

没办法,你代码看上去是没毛病的。那么问题就出在跨域上了,那么解决办法有什么呢?

  1. 不跨域,不就是下载了嘛

    1. 通过 download 属性来表述资源需要下载,而不是打开。pc兼容性较差,移动端不支持
  2. 通过服务端设置下载头 Content-disposition: attachment

    1. 通过下载头来告诉浏览器,资源需要下载。兼容性极佳(ie 都支持)。
  3. content-type 改成默认流 object-stream

    1. 隐藏资源类型,让浏览器无法解析,从而触发下载。兼容性也还可以,主要用在和下载头配合使用,防止 pdf 之类的文件被预览。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题