当前位置: 首页 > 知识库问答 >
问题:

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

祝允晨
2024-07-08

背景

项目访问地址: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'

共有2个答案

小牛23116
2024-07-08

我之前做过文件预览服务也是遇到过这种问题,只要都是https或者http的地址就没问题了。

1:安全性考虑:HTTPS提供了数据传输过程中的加密,保护了信息的安全。而HTTP则没有这样的加密机制,因此在HTTPS环境下加载HTTP内容,可能会使得整个页面的安全性降低,从而被浏览器阻止。
2:浏览器策略:特别是在Chrome浏览器中,它默认不信任使用HTTP协议传输的文件,认为非HTTPS网站都是不安全的,自动屏蔽了来源于HTTP文件的下载。

罗凯
2024-07-08

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

方法:

  1. 下载资源也用https资源,且处理好跨域问题;
  2. 可以使用新窗口window.open()来请求下载。
 类似资料:
  • a标签下载文件的时候总是浏览器进度显示到了100%然后变成0%自动重新开始下载,这个是什么情况? 我观察到这个情况是偶发性的,对于某些文件就是循环下载,其他的文件没什么问题,不是文件特别大的问题。

  • 问题内容: 我正在尝试使用以下命令安装新的laravel实例: 但是我遇到以下问题: 在此处输入图片说明 我的Internet连接在代理服务器上:而且,我在平台上,并且有P帮助吗? 问题答案: 您需要告诉作曲家使用代理。 Like:

  • 问题内容: 我在这里指定了非常相似的要求。 我需要让用户的浏览器在以下情况下手动开始下载 但是我无法使用该方法,因为它将当前页面内容替换为您尝试下载的文件。 相反,我想在新窗口/选项卡中打开下载。这怎么可能? 问题答案: 使用不可见的: 要强制浏览器下载本来可以呈现的文件(例如HTML或文本文件),则需要服务器将文件的MIME类型设置为无意义的值,例如或另外,用于任意二进制数据。 如果只想在新标签

  • 我有一个上传文件的webapp。您可以使用有效帐户登录该站点,然后下载这些文件。我目前正在使用Ruby、Capybara和SeleniumWebDriver自动化整个框架,但我无法自动化下载文件的过程。 到目前为止,我尝试使用Selenium(这不起作用),还使用了Ruby库: 其中是指向该文件的链接的href,但首先我得到以下错误: openssl::ssl::sslerror:ssl_conn

  • 下载 <?php /** * 下载文件请求示例 */ require dirname(__DIR__) . '/vendor/autoload.php'; use Yurun\Util\HttpRequest; use Yurun\Util\YurunHttp; use Yurun\Util\YurunHttp\Handler\Swoole; $url = 'http://www.baid

  • 问题内容: 假设我的网站上有文件下载链接。 单击这些链接后,会将AJAX请求发送到服务器,该请求返回带有文件位置的URL。 我想做的是指示响应返回时,浏览器直接下载文件。有便携式的方法吗? 问题答案: 试试这个库https://github.com/PixelsCommander/Download-File- JS ,它比以前描述的所有解决方案都更现代,因为它使用“下载”属性和方法组合来带来最佳体

  • 视频文件下载问题? 为什么在微信电脑端视频能播放还能下载,在手机上就不能下载? 同一个视频。

  • 问题内容: 我需要将文件从https(需要身份验证)下载到远程VMware Server虚拟机 Jenkins中有插件可以做到吗? 我需要从该位置下载名称为“ suite”的最新更新文件 我下载了SCM URL,但是没有找到构建它的步骤。另外,我不确定这是否是合适的插件 问题答案: 该URL SCM插件 没有提供一个构建步骤 ,因为它可以让你有一定的网址为SCM(供应链管理一个能力 每个作业 )。