关于调试:在Chrome开发者工具中,资源的“状态=已取消”是什么意思?

What does status=canceled for a resource mean in Chrome Developer Tools?

是什么导致页面被取消? 我有一个Chrome开发者工具的屏幕截图。

Canceled Resource

这种情况经常发生,但并非每次都发生。 似乎一旦缓存了其他一些资源,页面刷新将加载LeftPane.aspx。 真正奇怪的是,这仅发生在Google Chrome中,而不是Internet Explorer 8中。为什么Chrome会取消请求?


我们遇到了类似的问题,即Chrome取消了在框架或iframe中加载内容的请求,但只是间歇性的,它似乎取决于计算机和/或互联网的连接速度。

这些信息已经过了几个月,但是我从头开始构建Chromium,从源头开始挖掘,找到可以取消请求的所有位置,并在所有这些位置设置断点以进行调试。从内存来看,Chrome唯一可以取消请求的地方:

  • 导致发出请求的DOM元素已删除(即,正在加载IMG,但是在加载之前,您已删除IMG节点)
  • 您所做的事情使加载数据变得不必要。 (即您开始加载iframe,然后更改了src或覆盖了内容)
  • 有很多请求发送到同一台服务器,而较早请求的网络问题表明后续请求无法正常工作(DNS查找错误,较早(相同)的请求导致了HTTP 400错误代码等)

在我们的案例中,我们最终将其追溯到一个框架,试图将HTML追加到另一框架,有时这是在目标框架加载之前发生的。触摸iframe的内容后,它将无法再将资源加载到其中(它将如何知道将其放置在哪里?),因此它将取消请求。


在JavaScript事件上的ajax请求上也可能发生status = canceled状态:

1
2
3
4
5
6
7
8
  $("#call_ajax").on("click", function(event){
     $.ajax({
        ...    
     });
  });


<button id="call_ajax">call</button>

该事件成功发送了请求,但随后被取消(但由服务器处理)。原因是,无论您是否在同一单击事件上发出任何ajax请求,元素都将在单击事件上提交表单。

为了防止请求被取消,JavaScript event.preventDefault();必须称为:

1
2
3
4
5
6
  $("#call_ajax").on("click", function(event){
     event.preventDefault();
     $.ajax({
        ...    
     });
  });


注意:请确保您没有任何包装表单元素。

我遇到了类似的问题,将带有onclick = {}的按钮包装在一个表单元素中。当点击按钮时,表单也被提交,这一切都搞砸了...

这个答案可能永远不会被任何人阅读,但是我想出了为什么不写它:)


需要注意的另一件事可能是AdBlock扩展或一般的扩展。

但是"很多"人拥有AdBlock。

要排除扩展程序,请在隐身模式下打开一个新标签,以确保要测试的扩展名为"隐身模式允许关闭"。


您可能要检查" X-Frame-Options"标题标签。如果将其设置为SAMEORIGIN或DENY,则Chrome(和其他浏览器)将根据规格取消插入iFrame。

另外,请注意,某些浏览器支持ALLOW-FROM设置,但Chrome不支持。

要解决此问题,您将需要删除" X-Frame-Options"标题标签。这可能使您容易遭受点击劫持攻击,因此您需要确定风险是什么以及如何减轻风险。


就我而言,我发现这是jquery全局超时设置,一个jquery插件将全局超时设置为500ms,因此当请求超过500ms时,chrome将取消该请求。


这是我发生的事情:服务器为302重定向返回了格式错误的"位置"标头。
当然,Chrome无法告诉我这一点。我在firefox中打开页面,并立即发现了问题。
很高兴拥有多个工具:)


我们遇到(canceled)状态的另一个地方是特定的TLS证书配置错误。如果某个站点(例如https://www.example.com)配置错误,以致证书不包括www.,但对https://example.com有效,则chrome将取消此请求并自动重定向到后一个站点。 Firefox并非如此。

当前有效的示例:https://www.pthree.org/


在iframe内不同域上的安全页面和非安全页面之间重定向时,发生了取消的请求。重定向的请求在开发工具中显示为"已取消"请求。

我有一个包含iframe的页面,其中包含由我的付款网关托管的表单。提交iframe中的表单后,付款网关将重定向回我服务器上的URL。重定向最近停止工作,最终变为"已取消"请求。

Chrome(我使用的是Windows 7 Chrome 30.0.1599.101)似乎不再允许iframe中的重定向转到单独域上的非安全页面。要解决此问题,我只是确保将iframe中的所有重定向请求始终发送到安全网址。

当我创建一个仅包含iframe的简单测试页时,控制台中出现了警告(我以前错过了它,或者可能没有出现):

1
[Blocked] The page at https://mydomain.com/Payment/EnterDetails ran insecure content from http://mydomain.com/Payment/Success

在PC,Mac和Android上的Chrome浏览器中,重定向已变为已取消的请求。我不知道它是否特定于我的网站设置(SagePay Low Profile)或Chrome中是否发生了更改。


如果我使用指向本地主机的"移动仿真",Chrome版本33.0.1750.154 m始终取消图像加载;特别是启用了用户代理欺骗功能(仅针对屏幕设置)。

当我关闭用户代理欺骗时;图片请求未取消,我看到了图片。

我还是不明白为什么。在前一种情况下,请求被取消时,请求标头(注意:显示了临时标头)仅具有

  • 接受
  • 缓存控制
  • 附注
  • 引荐
  • 用户代理

在后一种情况下,所有这些加上其他类似:

  • 曲奇饼
  • 连接
  • 主办
  • 接受编码
  • 接受语言


这是我刚刚遇到的另一种被chrome取消请求的情况,那里没有任何答案。

简而言之
我的Android手机不信任自签名证书。

细节
我们处于开发/调试阶段。网址指向自签名主机。代码如下:

1
location.href = 'https://some.host.com/some/path'

Chrome只是默默地取消了该请求,对于像我这样的网络开发新手来说,没有任何线索可以解决该问题。一旦我使用android手机下载并安装了证书,问题就消失了。


就我而言,我有一个点击事件主播,例如

1
 

在内部点击事件中,我进行了一些网络通话,Chrome取消了该请求。锚点具有href""表示,它会重新加载页面,同时发生带有取消的网络调用的click事件。每当我将href替换为void时

1
 

问题消失了!


通过JavaScript重定向时,我在Chrome中收到此错误:

1
    window.location.href="devhost:88/somepage";

如您所见,我忘记了" http://"。添加完之后,它就可以了。


当我将Web字体嵌入样式表时,我已经嵌入了所有类型的字体以及woff,woff2,ttf。最近,我注意到存在woff2时,Chrome取消了对ttf和woff的请求。我现在使用的是Chrome版本66.0.3359.181,但是我不确定Chrome何时开始取消其他字体类型。


我们遇到了这样的问题,即标签