Safari iOS无法加载Javascript文件?

8

最近出现了安全漏洞,因此我刚刚升级了我的iOS系统,但是我发现我的网站在手机上无法正常加载!

我将问题简化为一个示例...

index.html =

<html>
<head>
    <title>Demo</title>
    <meta name="description" content="Test of basic Javascipt function">
    <script src="demo.js"></script>
</head>
<body class="body">
    <div id="main">
    </div>
</body>
</html>

demo.js =

var i = 0;

function update() {
    'use strict';
    document.getElementById("main").innerHTML = i;
    i = i + 1;
}
setInterval(update, 1000);

在我的桌面上,这会产生一个迭代计数,但是当使用手机上的Safari(Mobile/12G34 Safari/601.1)查看时,javascript文件根本不会加载????甚至在我通过USB连接的WebInspector的“所有资源”选项卡下也没有显示出Javascript文件。

有什么建议吗?

谢谢,

比尔


编辑:

这个问题没有得到任何回应,但我仍在处理这个问题。 我找到了更多信息。

使用Safari WebInspector,我发现javascript未加载,因为...

在 'http://192.168.133.1/demo.html' 中阻止脚本执行,因为文档的帧被禁止,并且未设置 'allow-scripts' 权限。

由于我正在一个esp8266上自行搭建网页服务器来提供此页面,所以这条消息启发我调整我的HTTP头。 HTTP头看起来很好。

我无法弄清楚如何首先对此HTML页面进行沙箱处理以及如何“allow-scripts”,以便我可以在Safari Mobile中运行我的脚本。

任何帮助将不胜感激。

2个回答

5
我在为我的Arduino项目实现Web服务器功能时遇到了完全相同的问题。我的Web服务器实现在桌面浏览器和iOS中的Chrome (9.3.5)上运行良好。但是在Firefox (5.1(1)) 和 iOS上的Safari上出现了问题。我的网页使用包括jQuery在内的脚本进行数据传输,使用AJAX/JSON从Arduino获取数据。
问题出在我用作实现基础的示例中。在这些示例中,Web服务器对浏览器的HTTP GET请求的回复在OK情况下除了所请求的实际文档以外不包含任何其他内容。在这种情况下,Web浏览器认为Web服务器正在使用HTTP/0.9。此外,Content-Type也丢失了。大多数浏览器可以“猜测”回复的Content-Type,尽管它未包含在内。
在我的情况下,Safari报告了两个错误:
  1. 由于文档的框架被沙盒化并且未设置“allow-scripts”权限,因此阻止在http://myip中执行脚本。
  2. 因为它使用HTTP/0.9,所以将http://myip/image.jpg沙盒化。
第一个错误导致浏览器拒绝加载我的JavaScript和jquery.js。当然,在此之后AJAX将不起作用。桌面版Firefox还抱怨JSON回复格式不正确,但仍然正常工作。
我只是简单地改变了实现方式,使得HTTP回复总是在实际数据之前包含HTTP版本、状态码和内容类型。例如,当浏览器发送请求GET / HTTP/1.1时,服务器不仅发送默认的网页,还包括。
HTTP/1.1 200 OK
Content-Type: text/html

之后所有的错误都消失了。似乎新版本的Safari不喜欢接收HTTP/0.9,并会对其返回的内容进行沙盒处理。


0

我也遇到了同样的问题(在iOS 9.3.3的Safari/Chrome和OSX上的Safari 9.1.2中)。

原因是我们使用了一个JavaScript库来尝试加载所有图像的视网膜版本。不知何故,使用HTTP/0.9发送的请求而不是HTTP/1.1,这使得Safari自动沙盒化了所有后续请求的整个页面(错误消息说“由于HTTP/0.9自动沙盒化...”)。 iOS 9.3.3的安全更改日志(https://support.apple.com/en-us/HT206902)在CVE-2016-4651下提到了相关内容。

确保您的Web服务器支持HTTP/1.1,并使用HTTP/1.1请求页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接