是什么原因导致Chrome在缓存内容上针对localhost上的服务器提供net :: ERR_FAILED?

Mas*_*ler 8 html caching google-chrome http.sys

我正在构建一个Web服务器并尝试测试.服务器正在运行localhost:888,第一次加载Web应用程序时,一切正常.但是如果我尝试重新加载页面,那么一堆XmlHttpRequest请求就会失败net::ERR_FAILED.通过在服务器代码中放置断点,我可以验证请求是否实际上从未进入.

这不是连接失败,因为连接第一次成功.它成功一次然后失败的事实意味着它可能与缓存相关,但服务器代码中没有设置cache-control头的任何内容.所以我通过将服务器放在实际的Web服务器上来测试它.第一次,一切都要花时间加载; 第二次,它立即加载,所以这肯定是缓存相关的

这是一个运行在http.sys(没有IIS)之上的自定义服务器,看起来默认情况下会缓存一些内容,然后在后续运行时无法从中加载,但只有当我的服务器在localhost上运行时才会运行.在网上,它工作正常.就像我所知道的那样,net::ERR_FAILEDChrome中有一个通用的"出错了,我们没有任何有用的信息",所以我有点卡在这里.有谁知道是什么原因引起的?

rof*_*rol 43

我遇到了类似的问题。我已在 devtools 的 Network 选项卡中将请求复制为 fetch。

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

您必须将 fetch 命令粘贴到相同来源的开发控制台中,而不是意外地例如从 stackoverflow 打开它。


Joe*_*vey 15

只有一种方法可以深入了解这些类型的错误

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

我们最近发现由于客户端网络上的代理身份验证问题而导致套接字被关闭的 ERR_FAILED。

一旦您从上面的 chrome://network-errors/ 获得错误代码,这也可以是有用的参考


RiZ*_*KiT 8

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

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

也可以看看:


Dyl*_*ams 7

在这组答案中,一个非常重要且不受欢迎的评论是,“看看你的 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>
Run Code Online (Sandbox Code Playgroud)

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


mat*_*liu 5

一种可能的原因是您编写的 AppCache Manifest 错误。例如:在 /a/b/cache.html 文件中,您引用了 cache.appcache Manifest 文件,但在 cache.appcache 文件中,您声明如下:

缓存:

/缓存.html

这是错误的。

你应该写:

缓存:

/a/b/cache.html

希望这可以帮到你。


小智 5

就我而言,安装 SSL 证书解决了该问题。