在Chrome开发人员工具中,资源的状态=取消是什么意思?

什么会导致页面被取消? 我有Chrome开发人员工具的屏幕截图。

取消资源

这经常发生,但不是每次都发生。 好像有一些其他资源被缓存,页面刷新将加载LeftPane.aspx。 而真正奇怪的是,这只发生在谷歌浏览器中,而不是Internet Explorer 8中。Chrome的任何想法都会取消请求?


我们遇到了类似的问题,Chrome取消了在帧或iframe中加载内容的请求,但只是间歇性地执行,而且似乎取决于计算机和/或Internet连接的速度。

这些信息已过时几个月,但我从头开始构建Chromium,通过源代码查找所有可能取消请求的位置,并将所有这些位置的断点打上调试对象。 从内存中,Chrome将取消请求的唯一地点:

  • 导致请求的DOM元素被删除(即IMG正在加载,但在加载发生之前,您删除了IMG节点)
  • 你做了一些加载数据不必要的东西。 (即您开始加载iframe,然后更改src或覆盖内容)
  • 有很多请求发送到同一台服务器,并且早期请求上的网络问题表明后续请求不起作用(DNS查找错误,较早(相同)请求导致例如HTTP 400错误代码等)
  • 在我们的例子中,我们最终将其追溯到一帧,试图将HTML附加到另一帧,有时发生在目标帧甚至加载之前。 一旦你触及一个iframe的内容,它就不能再加载资源(它怎么知道把它放在哪里?),所以它取消了请求。


    status = cancel也可能发生在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>
    

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

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

    要解决这个问题,您需要删除“X-Frame-Options”标题标签。 这可能会导致您发生点击劫持攻击,因此您需要确定风险以及如何缓解风险。

    链接地址: http://www.djcxy.com/p/36427.html

    上一篇: What does status=canceled for a resource mean in Chrome Developer Tools?

    下一篇: Why does Chrome use the client cache differently in these two scenarios?