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

Debugging 在Chrome开发者工具中,资源的状态=取消意味着什么?,debugging,http,google-chrome,developer-tools,web-developer-toolbar,Debugging,Http,Google Chrome,Developer Tools,Web Developer Toolbar,什么会导致页面被取消?我有一个Chrome开发者工具的屏幕截图 这种情况经常发生,但不是每次都发生。似乎一旦缓存了一些其他资源,页面刷新就会加载LeftPane.aspx。真正奇怪的是,这只发生在谷歌浏览器上,而不是IE 8上。你知道为什么Chrome会取消一个请求吗?我们遇到了一个类似的问题,Chrome会取消在帧或iFrame中加载内容的请求,但只是间歇性地取消,这似乎取决于计算机和/或互联网连接的速度 这些信息已经过时几个月了,但我从头开始构建了Chromium,在源代码中查找所有可能取

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


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

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

这些信息已经过时几个月了,但我从头开始构建了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,则Chrome(和其他浏览器)将根据取消iFrame插入

另外,请注意,有些浏览器支持“允许从”设置,但Chrome不支持


要解决此问题,您需要删除“X-Frame-Options”标题标记。这可能会让您面临风险,因此您需要决定风险是什么以及如何减轻风险。

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

在我的例子中,我发现是jquery全局超时设置,一个jquery插件设置全局超时为500ms,这样当请求超过500ms时,chrome将取消请求。

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

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

但是“很多”人都有AdBlock


要排除扩展名,请在incognito中打开一个新选项卡,确保要测试的扩展名的“allow in incognito已关闭”。

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

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

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

当我创建了一个只有iframe的更简单的测试页面时,控制台中出现了一条警告(我以前没有看到或没有看到):


重定向变成了一个被取消的请求,出现在个人电脑、Mac和Android上的Chrome浏览器中。我不知道这是否是特定于我的网站设置(SagePay Low Profile),或者Chrome中是否发生了变化。

Chrome版本33.0.1750.154 m始终取消图像加载,如果我使用指向本地主机的浏览器;特别是在上进行用户代理欺骗(与屏幕设置相比)

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

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

  • 接受
  • 缓存控制
  • 布拉格马
  • 推荐人
  • 用户代理
在后一种情况下,所有这些加上其他因素如下:

  • 饼干
  • 联系
  • 主人
  • 接受编码
  • 接受语言

耸耸肩

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

document.location.href = mailToLink;

将其移动到$(窗口)。加载(函数(){…})而不是$(函数(){…})有帮助。

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

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

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

$(“#调用_ajax”)。在(“单击”,函数(事件){
$.ajax({
...    
});
});
呼叫
事件成功发送请求,但随后被取消(但由服务器处理)。原因是,无论您是否在同一个单击事件上发出任何ajax请求,元素都会在单击事件上提交表单

为了防止请求被取消,Ja
<script>
  $("#call_ajax").on("click", function(event){
     $.ajax({
        ...    
     });
  });
</script>

<button id="call_ajax">call</button> 
<script>
  $("#call_ajax").on("click", function(event){
     event.preventDefault();
     $.ajax({
        ...    
     });
  });
</script>
$('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
});
<script>
    window.location.href = "devhost:88/somepage";
</script>
<a href="" onclick="somemethod($index, hour, $event)">
<a href="javascript:void(0)" onclick="somemethod($index, hour, $event)">
$('button').on('click', function(e){

    e.preventDefault();

    //do ajax
    $.ajax({

     ...
    });

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