首页 > 解决方案 > 什么会导致 XMLHttpRequest 在浏览器默认超时之前挂起而没有错误?

问题描述

我是一名前端开发人员,对网络的工作方式了解有限。

当 Javascript 的 XMLHttpRequest 超时时,会触发ontimeout处理程序。

除非设置了XMLHttpRequest.timeout属性(现代浏览器支持),否则请求会等待浏览器的默认时间限制(在 Chrome 中为 300 秒 / 5 分钟)。

如果我向不存在的地址或已关闭的服务器发送请求,则会出现错误响应,对吗?

我的问题是,什么网络或服务器条件会导致请求挂起直到超时,而不是快速返回错误响应?

标签: javascriptnetworking

解决方案


在以下情况下调度XMLHttpRequest 超时 ProgressEvent :

在获取完成之前,作者指定的超时已经过去。

因此,导致请求挂起的网络或服务器条件基本上是任何导致长时间返回响应的情况。

  • 慢速服务器
  • 巨大的响应载荷
  • 网络连接丢失
  • 客户端网络连接慢

等等等等

如果我向不存在的地址或已关闭的服务器发送请求,则会出现错误响应,对吗?

不存在的地址可能会从您的 DNS 服务器返回错误,因此您应该很好。宕机的服务器不会做任何事情,它已经宕机了。在您的超时设置和您尝试访问的服务器的冗余之间会发生什么


推荐阅读