我在 Windows 10 上遇到了一个问题,即无法在 Firefox、Chrome 或 Edge 中下载某种类型的 URL。这些 URL 看起来像“http://localhost:8080/6/58/37.pbf”。
使用 Curl(在 Ubuntu 上通过 WSL),我可以验证文件是否下载正常,并且具有我期望的确切内容:
curl -o test http://localhost:8080/6/58/37.pbf
使用三种主流浏览器中的任何一种都会失败。
Firefox 报告(在弹出窗口中):
无法保存 C:\Users\steva\AppData\Local\Temp\m_YbgUKn.pbf.part,因为无法读取源文件。
请稍后重试,或联系服务器管理员。
Chrome(在状态栏中):
失败 - 网络错误
Edge(在下载列表中):
无法下载 - 网络问题
真正奇怪的是,浏览器能当网站通过获取请求(XHR)访问数据时,可以正常访问此 URI。
我猜是某种安全设置阻止了我下载这个所谓的“有害”文件。这是一个非常普通的 Windows 10 安装。我没有添加任何第三方防病毒软件。我为 Chrome 和 Firefox 添加了各种扩展程序,但没有为 Edge 添加。
也可能是数据源上的 gzip 编码设置不正确。当我尝试使用 Powershell 上的 curl 下载文件时(我不太熟悉),我得到了:
curl -UseBasicParsing http://localhost:8080/6/58/37.pbf
curl : The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.
At line:1 char:1
+ curl -UseBasicParsing http://localhost:8080/6/58/37.pbf
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Invoke-WebRequest], InvalidDataException
+ FullyQualifiedErrorId : System.IO.InvalidDataException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
标头如下(在 Ubuntu WSL 中报告):
$ curl -I 'http://localhost:8080/6/58/37.pbf'
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
last-modified: Tue, 23 Nov 2021 07:07:24 GMT
etag: 5013110784-1637651244373
content-md5: bgkG68uoqKJm7TRrjnPfzg==
content-type: application/x-protobuf
content-encoding: gzip
Content-Length: 16743
X-Response-Time: 1.063ms
Date: Wed, 24 Nov 2021 05:52:11 GMT
Connection: keep-alive
Keep-Alive: timeout=5
答案1
Chrome 和 Edge 可能不允许下载,因为您使用的是 http。去年 (2020) 在此 Chromium 博客上宣布了这一消息 -保护用户免受 Google Chrome 中不安全下载的影响那:
今天我们宣布 Chrome 将逐步确保安全 (HTTPS) 页面仅下载安全文件。按照下面概述的一系列步骤,我们将开始阻止“混合内容下载”(在安全页面上启动的非 HTTPS 下载)。此举遵循了我们去年宣布的一项计划,即开始阻止安全页面上的所有不安全子资源。
不安全下载的文件会对用户的安全和隐私造成风险。例如,不安全下载的程序可能会被攻击者替换为恶意软件,而窃听者可能会读取用户不安全下载的银行对账单。为了解决这些风险,我们计划最终取消对 Chrome 中不安全下载的支持。
尝试使用 https。