只有手机Safari无法打开页面,没有互联网消息
Posted
技术标签:
【中文标题】只有手机Safari无法打开页面,没有互联网消息【英文标题】:Only mobile safari cannot open the page, no internet message 【发布时间】:2013-10-20 19:57:46 【问题描述】:起初,我没有 iPad,但一些客户报告说我的网站在 iPad 上出现了一些奇怪的问题。他们无法打开网站上的任何页面,最终会出现一个空白页面,并显示以下消息:“Safari 无法打开网页,因为它没有连接到互联网”。
该消息有点奇怪,因为用户可以打开其他网站并且它们已连接到互联网。有时您会看到网页片刻,然后看到相同的消息。
昨天我的一个朋友(他不是程序员)带来了他的带有 ios7 的 iPad 3 来测试它,但我们无法弄清楚问题是什么,因为 Safari 不共享一些调试信息(至少你需要一个 mac 才能看到调试信息,我也没有 Mac)。
我在 Windows 机器上本地测试了相同版本的网站,以确保它不是托管问题。 iPad Safari 上出现同样的错误,因此提供的文件存在问题。
该网站是用 php 编写的。到目前为止我已经测试过的内容(并没有导致解决方案):
Safari:关闭 Cookie 和 javascript Safari:多次清空缓存 PHP:关闭发送标头信息(禁用所有自定义缓存标头) PHP:关闭浏览器的自定义 CSS PHP:关闭精灵嵌入(base64 数据嵌入) PHP:关闭 html 的缩小问题仍然存在。如果没有 Safari 的任何调试信息,很难测试出了什么问题,有人可以看到导致此错误的 safari 浏览器中发生了什么吗?
网站: http://www.meezingeninrotterdam.nl
MAC版的Safari也会出现这个错误吗?
编辑: 向 Apple 报告错误:
更新:
认为我找到了原因,另请参阅我的解决方案。如果你有一个iDevice,你想测试它来确认吗?请参阅下面的解决方案。
更新 2
查看答案,来自 Apple 的答案。没有解决方案。如果您知道解决方案或解决方法,请告诉我。
【问题讨论】:
【参考方案1】:我遇到了这个问题,Safari 会返回消息 Safari cannot open the page because the network connection was lost.
我的客户遇到了这个问题,但它对我来说工作正常。我最终能够在 iOS 10.2 上使用适用于 iPhone 7 的 iOS 模拟器复制该问题。
服务器正在使用 nginx 1.4.6 运行 Ubuntu 14.04(可信任),并且该站点使用来自 Let's Encrypt 的 SSL/TLS 证书。
我使用sudo tail -f /var/log/nginx/error.log
监控错误日志
每次我在 iPhone 模拟器中刷新站点时,它都会在服务器上生成三个新的错误消息:
2016/12/22 17:48:39 [alert] 8071#0: worker process 12812 exited on signal 11 (core dumped)
2016/12/22 17:48:39 [alert] 8071#0: worker process 12848 exited on signal 11 (core dumped)
2016/12/22 17:48:40 [alert] 8071#0: worker process 12846 exited on signal 11 (core dumped)
经过一番挖掘,原来是a bug with how nginx talks to OpenSSL。
明显的解决方法是对所有服务器块使用相同的会话缓存,例如在 http 级别对其进行配置。
我们在/etc/nginx/sites-available/
的每个虚拟主机的server
范围内设置了以下ssl_session_cache
选项:
ssl_session_cache shared:SSL:50m;
我从/etc/nginx/sites-available/
下的每个虚拟主机配置中删除了此配置行,并将其添加回主/etc/nginx/nginx.conf
配置文件的http
范围内。
用sudo service nginx restart
重启nginx后,问题就解决了。 :)
【讨论】:
我们遇到了完全相同的问题,这是正确的解决方法。将ssl_session_cache shared:SSL:10m;
移动到 HTTP 块,而不是在每个服务器块中。这篇文章很旧,但在 2020 年 12 月,这仍然是 Nginx 1.19 和 iOS 14 Safari 的问题!非常难以跟踪的问题,因此我非常感谢您的这一见解。【参考方案2】:
我可以确认这在 iOS7 中的 iPhone 5S 上已损坏。我会说,在 Mac 上的 Safari 中,我收到以下警告:
“4event.layerX 和 event.layerY 在 WebKit 中被破坏和弃用。它们将在不久的将来从引擎中删除。”
不确定这是否是您的问题,但这是我在 safari for mac 上看到的唯一错误。
我将手机连接到我的 Mac 并尝试使用开发者控制台...我看到的唯一错误是:
加载资源失败:网络连接丢失 无效的 CSS 属性声明 #FF0000 in general.css
希望里面有帮助。我唯一能想到的其他事情是,也许您的服务器正在发送 iOS7 不喜欢的标头。
【讨论】:
大家好,感谢您提供的详细信息!我修复了 CSS 并使用 csslint 检查它是否有错误,并发现另外两个。但是,如果这没有帮助,可能是我使用的 webfonts 的问题吗?感谢您的快速回复,非常感谢! 如果你想再次测试它,我真的很感激,因为我没有iDevice的Mac。 没有更多的 CSS 错误和 4event 错误,但在 iOS7 中仍然失败。我会说这必须是来自你的服务器的东西,iOS7 不喜欢。对不起,伙计,我会做一些谷歌搜索,看看你想出了什么。听起来这可能是 iOS 中的一个错误。 感谢测试。是的,它确实是 iOS 中的一个错误,并且自 iOS6 的最新更新以来就存在。它也可能是 TCP/IP 堆栈中的问题,导致服务器发送“对等连接重置”。但我想知道是什么原因造成的,所以我可以实施解决方法。也许使用的网络字体?我现在已经删除了 webfonts。 您可能必须以某种方式获得 Apple 的回复才能解决此问题。我在请求/响应标头中没有看到任何奇怪的东西……您是否有任何机会使用代理?也许某种缓存机制?如果是这样,那可能是在冲洗它。您可能想尝试联系您的托管公司/服务器管理员。【参考方案3】:我也可以在 Mac 版 Safari 中确认相同的错误:
4event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future."
看起来您遇到了 jQuery / webkit 问题?看看这里关于同一件事的这篇文章......
WebKit issues with event.layerX and event.layerY
另外,当我在 Safari 中运行 iOS7 的 iPhone 5 上打开该网站时,我收到此错误:
Safari cannot open the page because the network connection was lost.
如果我在 iPhone 上的 Chrome 中打开它,它会显示:
The webpage is not available
希望所有这些信息对您有所帮助...看起来确实是网站上某些属性的代码问题...或者 jQuery 的使用方式。
更新
查看您的 CSS 代码,我认为问题可能是浏览器不喜欢的一些糟糕的 CSS。这行有问题:
.dialog .error .errcolor:#FFF;text-shadow:0px 0px 10px; #FF0000
;padding:0 0 0 2px;clear:both;
看看我的粗体部分。您指定了颜色,但没有与之匹配的属性。我不能说这是唯一的问题......但解决这个问题将是一个好的开始。
【讨论】:
顺便说一句 @Erwinus 如果你修复了网站上的 CSS,请在此处评论,我将在 iPhone 上试用更新后的网站。 大家好,感谢您提供的详细信息!我修复了 CSS 并使用 csslint 检查它是否有错误,并发现另外两个。但是,如果这没有帮助,可能是我使用的 webfonts 的问题吗?感谢您的快速回复,非常感谢! 我使用 jQuery 较旧的版本 1.5.1。原因是这个版本最适合某些插件、现有代码和 IE9。 如果你想再次测试它,我真的很感激,因为我没有iDevice的Mac。注意:Chrome 与 Safari 并没有太大区别,因为它们使用相同版本/引擎的 webkit,因为 Apple 不允许安装引擎以外的其他引擎。 刚刚在我的 iPhone 上试了一下。两个浏览器都有同样的问题。可能是您正在使用的 jquery 版本。我在上面链接的帖子说这个问题在以后的版本中得到了修复。 1.7x 什么的。不确定这是否会解决移动设备上的显示问题,但可能值得研究。【参考方案4】:我在自己的一个网站上遇到了同样的问题。我注意到它可以在我的开发服务器上运行,并且它运行的是较新版本的 FastCGI(2.4.7 与 2.4.6)模块。作为一个在黑暗中的镜头,我在我的生产系统上安装了更新的 FastCGI 2.4.7,它解决了这个问题。
如果您没有使用 FastCGI,也许更新日志至少会为您指明正确的方向:http://files.directadmin.com/services/custombuild/mod_fastcgi-2.4.7/CHANGES
【讨论】:
感谢您的帮助。我不认为这与此有关,因为网站上的错误页面正常显示。也在我的本地开发服务器和相同的行为上测试它。 Erwinus:我发现一些错误页面也对我有用。我应该注意到这一点。对我来说,FastCGI 和我正在使用的框架(Perl Dancer + Plack)之间似乎有些奇怪的交互。碰巧升级 FastCGI 对我有用。祝您找到解决方案好运。 但我仍然认为错误出在 iOS7 中,因为今天在 iPad 1 上测试该网站,该网站运行良好。【参考方案5】:好吧,我想我知道了,但必须得到 Apple iDevice 用户的确认,因为我没有这样的设备。
我可以访问服务器上的错误日志文件。有一些有趣的行可以找到,例如:
[error] [client 81.204.47.42] mod_security: Access denied with code 500. Pattern match "Mozilla/(4|5)\\\\.0$" at HEADER("USER-AGENT") [hostname "www.meezingeninrotterdam.nl"] [uri "/data:image/x-icon;base64,AAABAAEAICAAAAAAAACoCAAAFgAAACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////ACCB2AA/TVgAjMPXAG ... etc etc
html 页面中的 favicon 是 base64 编码的,但 iDevice 上的 Safari 尝试从服务器加载它。例如,这样的编码图标在 Windows 的旧 Safari 版本上完美运行。因为在 URL 中您看到路径斜杠(例如字符串 '////'),服务器将此视为异常编码并引发内部服务器错误(代码 500)。
当不是基本内容(例如 html 文件)引发此错误时,这不一定是问题。这是 Safari 中的一个严重错误,当页面的一部分(属于页面的文件)抛出 500 错误时,它不会显示整个页面。
我尚未对此进行测试,因为我没有 iDevice。我还想使用引发 500 错误的页面对其进行测试,以检查 Safari 上是否出现相同的错误消息(“Safari 无法打开网页,因为它未连接到互联网”)。如果为真,这是一条愚蠢的消息,因为有互联网连接,但只有页面无法访问。
我已经从页面中删除了 base64 编码的 favicon 和 apple-touch-icon,所以我认为它现在必须正常加载。
有iDevice(iPad/iPhone等)的人可以确认一下吗?如果加载正常,上面的案例描述就是问题所在。
网址是:http://www.meezingeninrotterdam.nl(去过一次不要忘记刷新内容)。
【讨论】:
这有点奇怪。在 iPad 1 上测试并完美运行。 你能用 Chrome 代替 Safari 试试吗?也许我们有缓存问题。 我重置了 safari,重置了所有网络连接...主页闪烁了一秒钟,然后我得到了同样的错误。 感谢您的测试,我想应该是别的什么吧?这个问题让我发疯了。【参考方案6】:哦,真的,现在我确定了,Apple 支持很烂。
这是我今天在邮箱中收到的电子邮件。
Hello Erwinus,
Engineering has determined that your bug report is a duplicate of another issue and will be closed.
The open or closed status of the original bug report your issue was duplicated to appears in the yellow "Duplicate of XXXXXXXX" section of the bug reporter user interface. This section appears near the top of the right column's bug detail view just under the bug number, title, state, product and rank.
Example:
13556600 User interface anomaly in OS X
State: Duplicate Product: OS X
Rank: 3 - Medium
---------------------------------------------------------------
Duplicate of 10535951 (Open)
---------------------------------------------------------------
好的,现在我知道这是一个错误,但我可以使用哪种解决方法?不,没有答案。当我在 Bug Reporter 中搜索问题 ID #10535951 时,它找不到它!
这是我的朋友们的答案,不要浪费你的时间注册并报告错误来帮助这些人。
问题未解决!
如果您知道比这种糟糕的支持更好的解决方法或解决方案,请告诉我。
【讨论】:
【参考方案7】:您是否有可能对您的网页使用 gzip 压缩?我有一个类似的问题,我的 CSS 会在 iOS 7 上的移动 Safari 上出现片刻,但随后我会收到错误消息“Safari 无法打开页面,因为网络连接丢失。”
关闭网站的 gzip 压缩后,页面又开始正常工作了。
这是一个长镜头,但值得一试。
【讨论】:
您好,感谢您的回复。是的,我正在对所有内容使用 gzip 压缩。如果我有时间测试它,我会告诉你结果是什么。我想问你,你知道这是一个错误还是另一个问题(事物的组合?)。【参考方案8】:我今天偶然发现了类似的问题。 Safari 也无法在 Mac 和 iPhone 上打开我的 https 网站,但其他浏览器可以很好地打开它。 Safari 重置连接并显示类似这样的消息“Safari 无法打开页面,因为网络连接已重置” 通过添加此行解决了问题
ssl_session_cache shared:SSL:1m;
到“服务器..”块中的 nginx 配置文件
【讨论】:
谢谢你这么久的回答。很明显,这是一个浏览器错误。但是,我没有使用 https 而是使用 http 并且没有使用 nginx 而是使用 Apache。实际上,需要更改服务器配置以“解决”只有一个浏览器的问题有点愚蠢。但是,干草,无论如何,谢谢你的提示,你的努力。以上是关于只有手机Safari无法打开页面,没有互联网消息的主要内容,如果未能解决你的问题,请参考以下文章
ShareKit2.0 打开 Facebook 手机,但无法重定向。 Safari 说页面无效
ios9.3无法点开网站链接 ios9.3不能打开Safari内链接怎么解决