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 xhr (AJAX) 请求失败
加载资源失败:下载多个文件时,Safari 浏览器中的帧加载中断
跨域资源共享的问题:预检请求后 OSX Safari 和 iOS Safari 均失败