【问题标题】:XMLHttpRequest "Failed to load resource" with SafariSafari XMLHttpRequest“加载资源失败”
【发布时间】:2016-04-06 12:11:50
【问题描述】:

我尝试从微控制器获取带有 XMLHttpRequest 的数据字符串。 该请求适用于 Internet Explorer、Firefox、Chrome 和 Opera,在浏览器 Konsole 中没有任何错误。 只有 Safari 会出现错误“加载资源失败:网络连接丢失”的问题。 微控制器只回答数据串(5 个字节)。

function httpGetFreq(){
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = function() { 
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
            freq = parseFloat(xmlHttp.responseText) / 1000;
            animate ();
        }
    }
    xmlHttp.overrideMimeType('text/plain');
    xmlHttp.open("GET", "frequenz", true);
    xmlHttp.send(null);
}

【问题讨论】:

  • 网络标签中有任何信息吗?
  • 在网络选项卡中有以下请求:类型:XHR;方法:获取;方案:HTTP;地位: -;缓存:否;尺寸: -;转移:-;启动定时器:0.443ms;潜伏: -;持续时间 -

标签: javascript safari xmlhttprequest


【解决方案1】:

“加载资源失败:网络连接丢失”可能是由于以下原因之一。

  1. XHR 请求一个 Content-Length > 实际内容长度的页面 在这种情况下 Safari:等待超时,错误事件,“加载资源失败:网络连接丢失。”在控制台中

  2. XHR 请求一个 Content-Length > 实际内容长度以服务器突然终止结尾的页面 Safari:错误事件,“加载资源失败:网络连接丢失。”在控制台中

所以最可能的原因可能是内容长度不匹配,请在wire-shark中检查接收和发送的内容长度是否相等或是否有任何数据包丢失

【讨论】:

    【解决方案2】:

    这可能还有另一种可能性。 Safari 以外的浏览器会忽略响应类型,例如,如果您发出 HTTP 请求并且响应是 TCP 数据包。在这种情况下,Safari 会丢弃它,而 Chrome 等其他浏览器则将其视为 HTTP 响应。

    因此,请检查您的 HTTP 服务器代码,响应是否包含 HTTP 标头。在我看来,这一定是最可能的原因。在 Wireshark 中检查响应数据包类型是 HTTP 还是 TCP。

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2017-02-01
      • 2017-09-16
      • 1970-01-01
      • 2015-09-17
      • 2016-02-27
      • 2012-07-24
      • 2018-01-15
      • 2013-02-26
      相关资源
      最近更新 更多