起初,我没有 iPad,但一些客户报告说我的网站在 iPad 上出现了一些奇怪的问题。他们无法打开网站上的任何页面,最终会看到一个空白页面,并显示以下消息:“Safari 无法打开网页,因为它未连接到互联网”。
该消息有点奇怪,因为用户可以打开其他网站并且它们已连接到 Internet。有时您会在一瞬间看到网页,然后看到相同的消息。
昨天我的一个 friend (他不是程序员)带着他的带有 IOS7 的 iPad 3 来测试它,但我们无法弄清楚问题是什么,因为 Safari 不共享一些调试信息(至少你需要一个 mac 才能看到调试信息,我也没有 Mac)。
我在 Windows 机器上本地测试相同版本的网站,以确保它不是托管问题。在 iPad Safari 上出现同样的错误,因此提供的文件存在问题。
该网站是用 PHP 编程的。到目前为止我测试过的(并没有导致解决方案):
- Safari:关闭 Cookie 和 Javascript
- Safari:多次清空缓存
- PHP:关闭发送 header 信息(禁用所有自定义缓存 header )
- PHP:关闭浏览器的自定义 CSS
- PHP:关闭 Sprite 嵌入(base64 数据嵌入)
- PHP:关闭 HTML 缩小
问题依旧。如果没有 Safari 的任何调试信息,很难测试出了什么问题,有人可以看到导致此错误的 safari 浏览器中发生了什么吗?
网站: http://www.meezingeninrotterdam.nl
这个错误是否也发生在 MAC 版本的 Safari 上?
编辑: 向 Apple 报告错误:
更新:
我想我找到了原因,另请参阅我的解决方案。如果你有一个 iDevice,你想测试它来确认吗?请参阅下面我的解决方案。
更新 2
查看答案,Apple 的回答。没有解决方案。如果您知道解决方案或解决方法,请告诉我。
最佳答案
我遇到了这个问题,Safari 会返回消息 Safari 无法打开页面,因为网络连接丢失。
我的客户端遇到了这个问题,但它对我来说工作正常。我最终能够在 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 .
Obvious workaround is to use the same session cache for all server blocks, e.g. to configure it on the http{} level.
我们在 /etc/nginx/sites-available/
中每个虚拟主机的 server
范围内设置了以下 ssl_session_cache
选项:
ssl_session_cache shared:SSL:50m;
我从 /etc/nginx/sites-available/
下的每个虚拟主机配置中删除了此配置行,并将其添加回 http
主范围内/etc/nginx/nginx.conf
配置文件。
用 sudo service nginx restart
重启 nginx 后,问题就解决了。 :)
关于javascript - 只有手机safari打不开页面,没有网络消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340129/