年轻同事解决http文件在谷歌无法下载问题,记录一下

2,185 阅读2分钟

问题:

1.Chrome 浏览器默认不信任使用 HTTP 协议传输的文件(这个文件就到别的浏览器(比如火狐)就是正常的)

2.谷歌浏览器https协议就是正常的

解决方法:

如果 window.location.href 方法也不能解除浏览器阻止 HTTP 协议的文件下载,可能是因为浏览器的安全设置仍然阻止了该操作。在这种情况下,可以尝试以下方法:

  1. 在服务器端设置响应头:如果您有访问服务器端的权限,可以在服务器端设置响应头,以便浏览器可以下载 HTTP 协议的文件。在 HTTP 响应头中,设置 Content-Disposition 属性为 attachment,并指定文件名。例如,在 PHP 中可以使用以下代码:

php

header('Content-Disposition: attachment; filename="file.pdf"');

readfile('example.com/path/to/fil…');

在上面的代码中,将 Content-Disposition 属性设置为 attachment,指示浏览器下载文件而不是在浏览器中打开。filename 属性指定文件名为 "file.pdf"readfile() 方法读取文件内容并将其输出到浏览器。

  1. 使用第三方下载工具:可以使用一些第三方下载工具,例如迅雷、Internet Download Manager 等,来下载 HTTP 协议的文件。这些工具通常会在下载时自动绕过浏览器的阻止。

需要注意的是,使用 HTTP 协议下载文件存在安全风险,建议尽可能使用 HTTPS 协议下载文件以提高网络安全性。

相关案例:

最近升级了chrome浏览器,发现不能从http网站下载文件了。

F12打开console,发现每次从http网站下载文件,console都会出现下载被blocked(屏蔽)的提示:

image.png

原来chrome认为 非HTTPS网站都是不安全的,自动屏蔽了 来源于http文件的下载。

chrome果然是大佬,说屏蔽就屏蔽。

解决方法如下:

浏览器地址栏输入:chrome://flags/

然后搜索 disallow-unsafe-http-downloads ,出现搜索结果如下, 选择 Disabled。重启浏览器,然后就可以下载Http文件了。

image.png