XHR不在Mac上的Safari中触发

时间:2017-09-28 09:15:52

标签: networking safari xmlhttprequest

最近,我遇到了一个问题,即我的XMLHttpRequests并不总是在第一次加载时被触发。我正在尝试从内部URL检索数据到php页面。

网络标签中的错误是类型 XHR 方法方案 HTTPS所有其他错误(状态,缓存) ,大小,转移,延迟,持续时间)是“ - ”。 打开给定调用的资源只是“尝试加载资源时发生错误”。如预期的那样。

查看控制台标签我收到错误消息“无法加载资源:网络连接丢失。”。

页面加载后,我可以在控制台选项卡中手动执行JS。我已尝试在文档准备好后强制执行该事件,但这对给定的问题没有影响。

所有这一切中最糟糕的部分是它不是一致的问题。

我在stackoverflow上发现了一些类似的帖子,但似乎没有明确的答案。 希望这些帖子还可以为我的查​​询添加一些价值:

我个人并不拥有Mac,因此我在处理一位同事的一些其他信息,我可以提供的是它是 macOS Sierra版本10.12.6以及它运行的Safari版本是版本11.0(12604.1.38.1.7)

问题仅发生在safari上,而不是其他浏览器。 希望我的帖子包含足够的信息,因为这是我的第一个stackoverflow帖子。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我面临着类似的问题,因为没有加载css文件

  

无法加载资源:网络连接丢失

这是因为服务器端的压缩过滤器。 我禁用了内容类型的压缩过滤器,问题得到了解决。

如果您通过任何其他方式解决了问题,请分享。

答案 1 :(得分:0)

这很可能是由于以下两者之间的怪异互动造成的:

  • 特定的SSL / TLS证书(最著名的是让我们加密)
  • Safari是唯一不支持TLS会话票证(恢复TLS会话的更新选项)的主要浏览器
  • Web服务器(TLS服务器)提供TLS会话ID(用于恢复TLS会话的旧选项),但未存储实际的会话,因此实际上不允许会话恢复

缓解措施:

  • 禁用HTTP中的保持活动状态(例如,通过响应“ Connection:close”标头),理想情况下仅适用于Safari(检查useragent)
  • 实际上支持TLS会话(nginx:“ ssl_session_cache shared:SSL:10m”; nodejs:实现newSession / resumeSession事件)

资源: