是什么原因导致 Chrome 在本地主机上的服务器上缓存内容时提供了一个网络: : ERR_FAILED?

我正在构建一个网络服务器,并试图测试一些东西。服务器在 localhost:888上运行,当我第一次加载 web 应用时,一切都正常。但是,如果我尝试重新加载页面,一堆 XmlHttpRequest请求与 net::ERR_FAILED一起失败。通过在服务器代码中放置断点,我可以验证请求实际上从未进入。

这不是连接失败,因为连接第一次成功。它成功一次然后失败的事实表明它可能与缓存相关,但是在设置 cache-control头的服务器代码中没有任何内容。所以我把服务器放在一个实际的网络服务器上进行测试。第一次,所有东西都需要时间加载; 第二次,所有东西都是即时加载的,所以这肯定是与缓存相关的

这是一个运行在 http.sys(无 IIS)之上的自定义服务器,似乎默认情况下会缓存一些东西,然后在后续运行时无法从中加载,但只有当我的服务器在本地主机上运行时才会这样; 在 Web 上,它工作得很好。据我所知,在 Chrome 中,net::ERR_FAILED是一个通用的“出了问题,我们没有有用的信息给你”消息,所以我有点困在这里了。有人知道是什么引起的吗?

212441 次浏览

一个可能的原因是您写错了 AppCache 清单。 例如: 在你的/a/b/cache. html 文件中,你引用 cache. appcache Manifest 文件,但是在 cache. appcache 文件中,你像这样声明:

CACHE:

/cache. html

这是不对的。

你应该写:

CACHE:

[ a/b/cache.html ]

希望这个能帮到你。

我在请求一个虚拟主机时(星期一早上)在本地主机上遇到了这个错误。结果发现,我在另一个虚拟主机上还有一个未完成的调试操作(星期五下午的未完成任务:) ,它阻止了 Apache 为另一个请求提供文件。这导致我的浏览器控制台中出现 net::ERR_FAILED错误。

希望这对其他人来这里有所帮助。

我遇到了类似的问题。我在 devtools 的 Network 选项卡中复制了请求作为提取。

然后我在浏览器开发控制台中运行它。在那里我可以阅读关于 CORS 错误的描述。在 api 服务器上设置 cors 之后,它工作了。

你必须把提取命令粘贴到同一个源的 dev 控制台,而不是偶然地从 stackoverflow 打开它。

另一个原因是,当您使用 withCredentials: true(发送交叉原点 cookie)进行 XHR 调用时,不允许设置 Access-Control-Allow-Origin: *,但必须提供一个特定的域!

遗憾的是,你不能在这里使用域名列表,因为没有浏览器支持这个官方标准。但是有几个框架,比如 Spring,允许您设置一个白名单配置,然后根据请求进行匹配。

参见:

在这组答案中,一个非常重要且不受欢迎的评论是,“看看您的 CORS 头。”我遇到了一个类似的问题,它给了我一些刺激,让我犯了这个错误。在我的 Apache 日志中没有数据,但是我注意到我们正在调用一个辅助 URL,并且没有得到该辅助 URL 的响应。

Chrome 最初并没有称之为 CORS 问题,但是由于缺乏响应,我开始深入研究 Apache 设置,并修改了 CORS 源头。

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Header set Access-Control-Allow-Origin "https://our-site.com"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"


</Directory>

这个答案可能不适用于你的情况,但它适用于我的 net::ERR_FAILED

另一个潜在的原因是服务工作者正在处理的请求遇到了某种麻烦。在这种情况下,值得检查 dev 工具中的服务工作者控制台,看看那里是否有错误消息。

在我的例子中,安装 SSL 证书修复了这个问题。

只有一种方法可以彻底查明这些类型的错误

在 chrome 中使用 chrome://net-export/在一个选项卡中,然后在另一个选项卡中记录会话,并用 https://netlog-viewer.appspot.com/#import进行调试,这使您能够以更易读的格式查看输出。

我们最近发现,由于客户端网络上的代理身份验证问题,ERR _ FAILED 到套接字都被关闭了。

一旦您从上面得到了错误代码,这也可以成为有用的参考 Chrome://network-error/

如果使用节点,请确保在路由之前添加 CORS 头

app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});


app.get('/route.htm', function (req, res) {
res.sendFile( __dirname + "/" + "route.htm" );
});

而不是把 app.use放在后面。

在 package.json 的最后一行添加 “代理”: “ http://localhost:port_number/" ;,在客户端的请求体中添加 模式: 「同源」,

fetch('login', {
method: 'post',
mode: 'same-origin',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: username,
password: password,
})
})

This happened to someone on Mac OS / Chrome but not on Safari. And seems to have emerged recently (i.e. - likely not from a code deploy... Maybe a Chrome update?). I can't reproduce it on other computers with Chrome. Restarting Chrome and the computer didn't help.

我没有注意到任何奇怪的扩展,他们说,他们没有安装任何新的东西。

发帖以防 Chrome 浏览器出现新问题。