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

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


当前回答

Chrome版本33.0.1750.154米一致取消图像加载,如果我使用移动仿真指向我的本地主机;特别是用户代理欺骗(相对于屏幕设置)。

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

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

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

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

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

耸耸肩

其他回答

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

创建iframe 加载iframe提交一个表单 2秒后,移除iframe

thus, when the server takes more than 2 seconds to respond the iframe to which the server was writing the response to, was removed, but the response was still to be written , but there was no iframe to write , thus chrome cancelled the request, thus to avoid this I made sure that the iframe is removed only after the response is over, or you can change the target to "_blank". Thus one of the reason is: when the resource(iframe in my case) that you are writing something in, is removed or deleted before you stop writing to it, the request will be cancelled

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

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

The DOM element that caused the request to be made got deleted (i.e. an IMG is being loaded, but before the load happened, you deleted the IMG node) You did something that made loading the data unnecessary. (i.e. you started loading a iframe, then changed the src or overwrite the contents) There are lots of requests going to the same server, and a network problem on earlier requests showed that subsequent requests weren't going to work (DNS lookup error, earlier (same) request resulted e.g. HTTP 400 error code, etc)

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

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

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

如你所见,我忘记了'http://'.在我添加它之后,它起作用了。

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

简单地说 我的android手机上的自签名证书不受信任。

细节 我们正处于开发/调试阶段。url指向自签名主机。代码是这样的:

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

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

从严格的Angular角度来看:

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

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

在那个时候,它发生了