什么状态=取消的资源意味着在Chrome开发工具?

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

 cancelled Resource

这种情况经常发生,但不是每次都发生。似乎一旦缓存了一些其他资源,页面刷新就会加载LeftPane.aspx。真正奇怪的是,这只发生在谷歌Chrome浏览器中,而不是ie8。知道为什么Chrome会取消一个请求吗?

367335 次浏览

我们曾遇到过类似的问题,Chrome会取消在帧内或iframes内加载内容的请求,但只是间歇性的,这似乎取决于计算机和/或互联网连接的速度。

这些信息已经过时几个月了,但是我从头开始构建了Chromium,在源代码中挖掘了所有可以取消请求的地方,并在所有这些地方设置了断点以进行调试。根据记忆,Chrome会取消请求的地方只有:

  • 导致请求被删除的DOM元素(即一个IMG正在被加载,但在加载发生之前,你删除了IMG节点)
  • 您做了一些使加载数据变得不必要的事情。(例如,你开始加载一个iframe,然后改变SRC或覆盖内容)
  • 有很多请求发送到同一个服务器,早期请求的网络问题显示后续请求将无法工作(DNS查找错误,早期(相同)请求导致例如HTTP 400错误代码等)

在我们的例子中,我们最终追踪到一个试图将HTML附加到另一个帧的帧,这有时发生在目标帧加载之前。一旦您接触到iframe的内容,它就不能再将资源加载到其中(它如何知道将资源放在哪里?),因此它会取消请求。

我有两个CSS文件,它们存储在我的主CSS文件夹之外的另一个文件夹中。我正在使用表达式引擎,发现问题是在我的htaccess文件中的规则。我只是将文件夹添加到我的条件之一,它修复了它。这里有一个例子:

RewriteCond %{REQUEST_URI} !(images|css|js|new_folder|favicon.ico)

因此,检查htaccess文件是否存在潜在冲突是值得的

你可能想要检查“X-Frame-Options”标题标签。如果它被设置为SAMEORIGIN或DENY,那么iFrame插入将被Chrome(和其他浏览器)根据规范取消。

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

为了解决这个问题,你需要删除“X-Frame-Options”标题标签。这可能会让你对“点击劫持”攻击开放,所以你需要决定风险是什么以及如何减轻它们。

这是发生在我身上的事情:服务器为302重定向返回了一个畸形的“位置”标头。 当然,Chrome没有告诉我这一点。我在firefox中打开了这个页面,并立即发现了问题。 很高兴有多个工具:)

以我为例,我发现它是jquery的全局超时设置,一个jquery插件设置全局超时为500ms,这样当请求超过500ms时,chrome就会取消请求。

当我用$调用a. js文件时,也发生了同样的情况。ajax,并发出一个ajax请求,我所做的是正常调用。

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

但“很多”人有AdBlock....

为了排除扩展,以隐身方式打开一个新标签,确保你想测试的扩展“允许隐身”是关闭的。

当我在iframe内的单独域上的安全页面和非安全页面之间重定向时,发生了一个取消的请求。重定向请求在开发工具中显示为“已取消”请求。

我有一个iframe页面,其中包含一个由我的支付网关托管的表单。当iframe中的表单被提交时,支付网关将重定向回我服务器上的URL。重定向最近停止工作,并以“取消”请求结束。

似乎Chrome(我使用的是Windows 7 Chrome 30.0.1599.101)不再允许在iframe内重定向到一个单独域上的非安全页面。为了解决这个问题,我只是确保iframe中的任何重定向请求总是发送到安全url。

当我用一个iframe创建一个更简单的测试页面时,在控制台中有一个警告(我之前错过了或可能没有显示):

[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一致取消图像加载,如果我使用移动模拟指向我的本地主机;特别是用户代理欺骗on(而不是仅仅是屏幕设置)。

当我关闭用户代理欺骗时;图像请求没有被取消,我看到了图像。

我仍然不明白为什么;在前一种情况下,当请求被取消时,请求头(注意:显示的是临时头)只有

  • 接受
  • cache - control
  • 编译指示
  • 推荐人
  • 用户代理

在后一种情况下,所有这些因素加上其他因素,比如:

  • 饼干
  • 连接
  • 宿主
  • 接受编码
  • 接收语言

耸耸肩

在我的案例中,显示电子邮件客户端窗口的代码导致Chrome停止加载图像:

document.location.href = mailToLink;

移动到$(window)。负载(功能 () {...}) 而不是美元(函数 () {...}) 帮助。

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

<script>
$("#call_ajax").on("click", function(event){
$.ajax({
...
});
});
</script>


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

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

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

<script>
$("#call_ajax").on("click", function(event){
event.preventDefault();
$.ajax({
...
});
});
</script>

在这能帮助任何人,我遇到取消状态时,我省略了返回false;在表单中提交。这导致ajax发送之后立即紧跟提交操作,这将覆盖当前页面。代码如下所示,在末尾返回重要的false。

$('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
});

希望这能帮助到别人。

对于任何来自LoopbackJS并试图使用图表示例中提供的自定义流方法的人。我使用PersistedModel得到这个错误,切换到基本的Model修复了我的eventsource状态取消的问题。

同样,这是专门针对环回api的。既然这是谷歌上的顶级答案,我想我应该把这个放在混合答案中。

注意:确保你没有任何包装表单元素

我有一个类似的问题,我的按钮onclick={}被包装在一个表单元素。当点击按钮时,表单也被提交了,这把事情搞砸了……

我也遇到过同样的问题,在我们的代码深处,我们有这样的伪代码:

  • 创建iframe
  • 加载iframe提交一个表单

  • 2秒后,移除iframe

因此,当服务器需要超过2秒来响应服务器正在写响应的iframe时,被删除了,但响应仍然要写,但没有iframe要写,因此chrome取消了请求,因此为了避免这种情况,我确保iframe只有在响应结束后才被删除,或者你可以将目标更改为“_blank”。 其中一个原因是: 当你正在写入内容的资源(在我的例子中是iframe)在你停止写入之前被删除或删除时,请求将被取消

当我通过JavaScript重定向时,我在Chrome中得到了这个错误:

<script>
window.location.href = "devhost:88/somepage";
</script>

正如你所看到的我忘了http://'。在我添加它之后,它起作用了。

对于我的案例,我有一个锚与点击事件像

<a href="" onclick="somemethod($index, hour, $event)">

里面点击事件我有一些网络呼叫,Chrome取消请求。锚有href""的意思,它重新加载页面,同时它有被取消的网络调用的点击事件。当我用void替换href

<a href="javascript:void(0)" onclick="somemethod($index, hour, $event)">

问题消失了!

我们遇到(canceled)状态的另一个地方是在特定的TLS证书错误配置中。如果诸如https://www.example.com这样的站点配置错误,导致证书不包括www.,而对https://example.com有效,chrome将取消此请求并自动重定向到后者站点。这是 Firefox的情况。

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

对我来说,“取消”状态是因为文件不存在。奇怪为什么chrome不显示404

当我在样式表中嵌入web字体时,我嵌入了所有类型的字体以及woffwoff2ttf。最近我注意到Chrome取消请求ttfwoff时,woff2是存在的。我现在使用Chrome版本66.0.3359.181,但我不确定Chrome什么时候开始取消额外的字体类型。

对我来说,这是一条错误的道路。我建议调试的第一步是看看你是否可以加载文件独立的ajax等。

我们有这个问题有标签<button>的形式,这是应该从js发送ajax请求。但这个请求被取消了,由于浏览器,自动发送表单在任何点击button在表单。

因此,如果你真的想在页面上使用button而不是常规的divspan,并且你想发送表单抛出js -你应该使用preventDefault函数设置一个侦听器。

如。

$('button').on('click', function(e){


e.preventDefault();


//do ajax
$.ajax({


...
});


})

这是chrome取消请求的另一个例子,我刚刚遇到过,上面的答案中没有提到。

概括地说

.自签名证书在我的android手机上不受信任 < p > < br >详细信息 我们正处于开发/调试阶段。url指向自签名主机。代码如下:

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

Chrome只是默默地取消了请求,没有给像我这样的web开发新手留下任何线索来解决这个问题。一旦我使用android手机下载并安装了证书,问题就消失了。

请求可能已经被跟踪保护插件阻止了。

我在加载300张图片作为背景图片时遇到了这种情况。我猜一旦第一个超时,它就会取消所有其他的,或者达到最大并发请求。需要一次实现5个

原因之一可能是XMLHttpRequest.abort ()在代码中某处被调用,在这种情况下,请求将在Chrome开发人员工具网络选项卡中具有cancelled状态。

在我的情况下,它开始出现后chrome 76更新。

由于我的JS代码中的一些问题,窗口。位置被多次更新,导致取消先前的请求。 虽然这个问题之前就存在,但chrome在更新到版本76后开始取消请求。< / p >

我在更新记录时也遇到了同样的问题。在save()内,我正在准备从表单中获取的rawdata以匹配数据库格式(做大量枚举值的映射等),这间歇性地取消了put请求。我通过从save()中取出数据准备并从中创建一个专用的dataPrep()方法来解决这个问题。我将这个dataPrep转换为异步,并等待所有内存密集型数据转换。然后,我将准备好的数据返回到我可以在http put客户端中使用的save()方法。我确保在调用put方法之前等待dataPrep():

await dataToUpdate = await dataPrep(); http。把(apiUrl dataToUpdate); < / p >

这解决了间歇性取消请求的问题。

如果你使用了一些基于可观察对象的HTTP请求,比如Angular(2+)中内置的那些请求,那么当可观察对象被取消时,HTTP请求也可以被取消(当你使用RxJS 6 switchMap操作符合并流时常见的事情)。在大多数情况下,如果你想完成请求,使用mergeMap操作符就足够了。

如果您使用axios,它可以帮助您

// change timeout delay: Instance.defaults.timeout = 2500; < /代码> < / p >

https://github.com/axios/axios#config-order-of-precedence

我在div标记中有一个a标记。divonclick="location='http://mydestination.org/'"a标签在href中有相同的URL。这导致目标页面被加载两次,第一次加载被Chrome取消。

在我的情况下,问题的原因是另一个。

我的应用程序坐在代理后面,Chrome请求被发送与If-Modified-Since HTTP报头。当这个头文件出现时,预期的行为是:

只有在给定日期后最后一次修改时,服务器才会以200状态发送回所请求的资源。如果请求此后未被修改,则响应将是一个没有任何正文的304;

代理没有满足这一期望,响应一个304状态代码,但一个非空的主体,从而导致请求被取消。

在修复代理行为后,请求就像一个魅力。

内容安全策略头为我!你可以通过检查Chrome开发工具控制台来快速排除这种可能性,如果是CSP问题,控制台中会显示错误。在。net中,你可以通过在web中添加头部来解决这个问题。配置文件或代码。

拒绝将表单数据发送到“https://www.mysite.mydomain/”,因为它违反了以下内容安全政策指令:"form-action 'self' *;otherdomain www.thirdparty.co.uk"。

这是网络。以上错误的配置修正:

<cspConfiguration>
<directives>
<directive name="form-action" allowedSources="'self' *.mydomain>
</directive>
</directives>
</cspConfiguration>

从严格的Angular角度来看:

当你不能在代码层面上正确地中断时,就会发生这种情况。

假设request1 out,它的响应也是, 在那之后,嵌套的request2也发出了,它的响应也来了,我们直接打破了循环,而没有正确地破坏request1的订阅,

在那个时候,它发生了