Safari AJAX错误 - 无法加载资源

时间:2017-02-24 09:16:23

标签: javascript ajax networking safari xmlhttprequest

从今天起,我在一个正在研究的网络应用程序中有一个非常奇怪的错误。我没有对代码做任何事情,从一天到另一天出现了这个错误:

我对运行MAMP PRO的本地服务器执行AJAX请求(不使用jquery但使用普通的js)。所有在chrome和firefox中工作正常(在mac上测试)。但在safari中,请求总是会抛出错误:无法加载资源:网络连接丢失

当我尝试手动加载请求的url(而不是通过AJAX)时,一切正常。我还用 setTimeout 测试了请求,发现了一些有趣的东西:

当我在页面加载后直接执行请求(最多60毫秒)时,一切正常。之后连接会偶尔丢失,直到6000毫秒再次正常工作!非常奇怪的行为......我没有使用任何其他setTimeouts所以这个问题只能由safari引起。

我做错了什么,或者这只是一个非常新的狩猎虫?

2 个答案:

答案 0 :(得分:0)

我在其他地方看到有人提到Mac上的Safari存在问题。有些人发布解决方案是在服务器上禁用mac for safari上的活动。

BrowserMatch" Safari" nokeepalive

答案 1 :(得分:0)

在为我们的Web应用程序开发一项大型新功能时,我们也遇到了这个问题。我们使用来自JS客户端的XHR请求从Amazon Linux上托管的Tomcat服务器获取用户收藏夹。初始连接按预期工作正常。但是,第二个相同的请求在客户端JS控制台中失败,并显示“无法加载资源:网络连接丢失”。我怀疑Safari将第二个请求识别为第一个请求的错误副本。

我们当前用于Tomcat的解决方法是有效禁用KeepAlive支持。不幸的是,这会影响所有连接,而不仅仅是台式机和/或移动设备上的Safari。 Tomcat的此解决方案是在$ {CATALINA_HOME} /conf/server.xml ...

中的HTTPS连接器上设置参数。

maxKeepAliveRequests="1"

可能还有其他解决方案可以将损坏仅限于Safari连接。如果发现它们,我会回来更新此帖子。更好的乐队帮助是将结果缓存在我们的应用程序中,从而完全避免问题。