从今天起,我在一个正在研究的网络应用程序中有一个非常奇怪的错误。我没有对代码做任何事情,从一天到另一天出现了这个错误:
我对运行MAMP PRO的本地服务器执行AJAX请求(不使用jquery但使用普通的js)。所有在chrome和firefox中工作正常(在mac上测试)。但在safari中,请求总是会抛出错误:无法加载资源:网络连接丢失
当我尝试手动加载请求的url(而不是通过AJAX)时,一切正常。我还用 setTimeout 测试了请求,发现了一些有趣的东西:
当我在页面加载后直接执行请求(最多60毫秒)时,一切正常。之后连接会偶尔丢失,直到6000毫秒再次正常工作!非常奇怪的行为......我没有使用任何其他setTimeouts所以这个问题只能由safari引起。
我做错了什么,或者这只是一个非常新的狩猎虫?
答案 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连接。如果发现它们,我会回来更新此帖子。更好的乐队帮助是将结果缓存在我们的应用程序中,从而完全避免问题。