What does status=canceled for a resource mean in Chrome Developer Tools?
是什么导致页面被取消? 我有一个Chrome开发者工具的屏幕截图。
这种情况经常发生,但并非每次都发生。 似乎一旦缓存了其他一些资源,页面刷新将加载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中打开页面,并立即发现了问题。
很高兴拥有多个工具:)
我们遇到
当前有效的示例: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取消了该请求。锚点具有
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何时开始取消其他字体类型。
我们遇到了这样的问题,即标签
因此,如果您确实想在页面上使用
例如
1 2 3 4 5 6 7 8 9 10 11 | $('button').on('click', function(e){ e.preventDefault(); //do ajax $.ajax({ ... }); }) |
我有两个完全相同的东西,两个CSS文件存储在我的主要css文件夹之外的另一个文件夹中。我正在使用Expression Engine,发现问题出在htaccess文件中的规则中。我只是将文件夹添加到我的条件之一中,并对其进行了修复。这是一个例子:
1 | RewriteCond %{REQUEST_URI} !(images|css|js|new_folder|favicon.ico) |
因此,可能值得您检查htaccess文件是否存在任何潜在冲突
打电话给我时,我也是一样。带$的js文件。 ajax,并发出ajax请求,我所做的通常是正常的。
就我而言,显示电子邮件客户端窗口的代码导致Chrome停止加载图像:
1 | document.location.href = mailToLink; |
将其移动到$(window).load(function(){...})而不是$(function(){...})帮助。
当我忽略返回false时,这可以帮助我遇到被取消状态的任何人;在表格中提交。这导致ajax发送后紧接着是提交操作,该操作覆盖了当前页面。代码如下所示,重要的return末尾为false。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $('form').submit(function() { $.validator.unobtrusive.parse($('form')); var data = $('form').serialize(); data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val(); if ($('form').valid()) { $.ajax({ url: this.action, type: 'POST', data: data, success: submitSuccess, fail: submitFailed }); } return false; //needed to stop default form submit action }); |
希望能对某人有所帮助。
我曾经遇到过同样的问题,在我们代码的深处,我们有了这个伪代码:
- 创建一个iframe
-
iframe onload提交表格
-
2秒后,移除iframe
因此,当服务器花费2秒钟以上的时间来响应服务器向其写入响应的iframe时,该响应已被删除,但响应仍需写入,但没有iframe可以写入,因此chrome取消了该请求,因此,为避免这种情况,我确保仅在响应结束后才删除iframe,或者可以将目标更改为" _blank"。
因此,原因之一是:
当您要停止写入的资源(在我的情况下为iframe)在停止写入之前被删除或删除时,该请求将被取消
就我而言,它是在chrome 76更新之后开始的。
由于我的JS代码中的某些问题,window.location多次更新,导致取消了先前的请求。
尽管以前存在问题,但chrome在更新到版本76后开始取消请求。
对我来说,"取消"状态是因为文件不存在。奇怪为什么chrome不显示
对我而言,这就像一条错误的路一样简单。我建议调试的第一步是查看是否可以独立于ajax等加载文件。
这些请求可能已被跟踪保护插件阻止。
当加载300张图像作为背景图像时,这发生在我身上。我猜第一个超时了,它取消了所有其余的,或者达到了最大并发请求。需要一次实施5次
原因之一可能是在代码中的某处调用了XMLHttpRequest.abort(),在这种情况下,该请求在Chrome开发者工具的"网络"标签中的状态为
对于任何来自LoopbackJS并尝试使用其图表示例中提供的自定义流方法的用户。我使用
再次,这是专门为回送api。而且,由于这是最重要的答案,也是Google的最重要答案,所以我想我将这些答案混在一起。