Safari ajax 请求加载资源失败:网络连接丢失

Posted

技术标签:

【中文标题】Safari ajax 请求加载资源失败:网络连接丢失【英文标题】:Safari ajax request Failed to load resource: The network connection was lost 【发布时间】:2016-02-27 00:01:09 【问题描述】:

我在我的应用程序中收到一条消息“加载资源失败:网络连接丢失。”,该应用程序使用 ajax 请求从服务器获取内容。这个错误只在Safari中,其他浏览器都可以。

最近几个小时我一直在搜索,发现可能是由于 http 标头:

传输编码:分块 连接:保持活动 内容长度

我发现了类似的东西:https://github.com/woothemes/woocommerce/issues/7176 在底部被告知他们设置了

BrowserMatch "Safari" nokeepalive 在 .htaccess 中。

nginx服务器有类似的解决方案或设置吗?

谢谢

JF

【问题讨论】:

已解决:更改了 nginx 服务器的设置。在配置中为 safari 添加了 keepalive_disabled。 nginx.org/en/docs/http/… ios cordova/phonegap 应用程序中遇到了同样的问题。谢谢! @JakubFormanek 我们知道问题的根本原因吗?我看到为 safari 设置 keepalive_disabled 解决了这个问题,但我们知道它为什么会失败吗? 我遇到了同样的问题。 apache2有什么解决方案吗? 使用 Puma 解决:当我发出多个 AJAX 请求时,Safari 遇到了这个问题,我通过从 Puma 配置中删除 queue_requests 解决了这个问题。该选项也会影响 keepalive。 【参考方案1】:

它可能发生的原因之一是 Safari 处理某些 SSL 证书(主要是 LetsEncrypt)的方式。解决办法是放行:

ssl_session_cache shared:SSL:10m;

到你的 nginx 配置。

来源:https://community.letsencrypt.org/t/apple-safari-browsers-fail-to-connect/3731/3

【讨论】:

天哪,我一直在寻找这个答案一个小时,为什么它的记录如此模糊?! 这一切突然开始发生在我的一个应用服务器上。 LetsEncrypt 或我的 SSL 证书的更新会导致这种情况吗? 其实我的问题不是 SSL,而是一些 nginx 文件归 root 用户所有【参考方案2】:

使用 ajax 发布的表单也遇到了这个问题,并且当完成时执行了 window.location.reload(true)。 Safari 13.0.3 将在手动页面刷新后第一次工作(似乎一致)然后会得到“加载资源失败:网络连接丢失”。大约 3 次点击中的 2 次。

将客户端更改为:

使用 ajax-get 代替 post(每次使用唯一的查询参数值)

在完成时设置一个计时器,这样 window.location.reload(true) 就不会在 ajax 完成处理程序中完成

用户报告有效,但不确定其中一项更改或两者兼而有之。

希望这对某人有所帮助...

【讨论】:

以上是关于Safari ajax 请求加载资源失败:网络连接丢失的主要内容,如果未能解决你的问题,请参考以下文章

加载资源失败:Safari 上的请求超时

带有跨域重定向的 Safari xhr (AJAX) 请求失败

加载资源失败:下载多个文件时,Safari 浏览器中的帧加载中断

跨域资源共享的问题:预检请求后 OSX Safari 和 iOS Safari 均失败

加载资源失败:net::ERR_CONNECTION_REST

上传大图像时网络连接中止后恢复或重新启动ajax请求?