https下 a标签下载文件失败?

作者站长头像
站长
· 阅读数 5

背景

项目访问地址:https://xxx.com

a标签下载文件的方式,类似

const url = 'http: // 10.9.13.2:10056/file-storage/file/subject/yqtempalte.xlsx'
<a  :href="url"></a>

在本地下载正常,部署到正式环境之后,下载失败

定位原因:是项目访问https的原因,更改成http之后下载正常。

解决方案:

进行代理转发,改成调用接口的方式进行下载

  1. 设置代理 "/api/file-storage","http://10.8.15.1:10040/file-storage/"
  2. 书写、调用接口

    接口url: '/file-storage/file/subject/yqtempalte.xlsx'

调用接口之后本地和正常环境下都能正常下载文件。

问题:

  1. 为什么代理转发、接口调用的方式在正常环境中https可以正常下载文件,而a标签url下载的方式会出错?
  2. 接口调用下载的形式下,是否可以直接省去代理转发这步。接口url地址改成:'http: // 10.9.13.2:10056/file-storage/file/subject/yqtempalte.xlsx'
回复
1个回答
avatar
test
2024-07-09

https网站,下载http资源,浏览器视为不安全,会被拦截。

方法:

  1. 下载资源也用https资源,且处理好跨域问题;
  2. 可以使用新窗口window.open()来请求下载。
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容