从今天开始,我正在开发一个Web应用程序中存在一个非常奇怪的错误。我没有对代码做任何事情,从一天到一天,这个错误出现了:
我向运行MAMP PRO的本地服务器执行AJAX请求(不是使用jquery,而是使用普通的js)。在chrome和firefox中都可以正常工作(在Mac上测试)。但是在safari中,请求始终会引发错误:加载资源失败:网络连接丢失
当我尝试手动加载请求的网址(而不是通过AJAX)时,一切正常。我还使用 setTimeout 测试了请求,发现了一些有趣的东西:
当我在页面加载后直接执行请求(最多60毫秒)时,一切正常。之后,连接会偶尔丢失,直到6000毫秒为止,一切恢复正常!相当奇怪的行为...我不与任何其他setTimeouts一起工作,所以该问题只能由野生动物园引起。
我是在做错什么,还是只是一个非常新的野生动物园错误?
最佳答案
在为我们的Web应用程序开发一项大型新功能时,我们也遇到了这个问题。我们使用来自JS客户端的XHR请求从Amazon Linux上托管的Tomcat服务器获取用户收藏夹。初始连接可以正常工作。但是,第二个相同的请求在客户端JS控制台中失败,并显示“无法加载资源:网络连接丢失”。我怀疑Safari将第二个请求识别为第一个请求的错误副本。
我们用于Tomcat的当前解决方法是有效地禁用KeepAlive支持。不幸的是,这会影响所有连接,而不仅仅是台式机和/或移动设备上的Safari。 Tomcat的此解决方案是在$ {CATALINA_HOME} /conf/server.xml中的HTTPS连接器上设置参数。
maxKeepAliveRequests="1"
可能还有其他解决方案可将损坏限制在仅Safari连接范围内。如果发现它们,我会回来更新此帖子。更好的乐队帮助是将结果缓存在我们的应用程序中,并完全避免出现此问题。
关于javascript - Safari AJAX错误-无法加载资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42434810/