Safari iOS没有加载Javascript文件?

我刚刚升级了我的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文件根本不会加载???? JavaScript文件甚至不会显示在我通过USB绑定的WebInspector中的“所有资源”选项卡下。

build议?

谢谢,

法案


编辑:这个问题没有得到任何回应,但我仍然摔跤这个问题。 我find了更多的信息。

使用Safari WebInspector我发现JavaScript没有加载,因为…

“ http://192.168.133.1/demo.html ”中的脚本执行被阻止,因为文档的框架被沙箱化,并且没有设置“允许脚本”权限。

由于我在esp8266上为这个网页提供了一个土豆网服务器,所以这个消息激发了我调整了我的HTTP头。 HTTP标头看起来很好。

我无法弄清楚这个HTML页面是如何变得沙箱,以及如何“允许脚本”,以便我可以在Safari Mobile中运行我的脚本。

任何帮助将非常感激。

在为我的Arduino项目实现Web服务器function时,我遇到了同样的问题。 我的networking服务器实现在桌面浏览器和iOS的Chrome(9.3.5)中运行良好。 我在Firefox(5.1(1))和Safari中遇到了问题。 我的网页使用包括jQuery的脚本。 脚本用于通过AJAX / JSON从Arduino传输数据。

问题出在我用作实现的基础的例子中。 在这些例子中,在确定的情况下,web服务器对浏览器的HTTP GET请求的回复不包含除请求的实际文档以外的其他内容。 在这种情况下,Web浏览器认为Web服务器正在使用HTTP / 0.9。 另外,缺lessContent-Type。 大多数浏览器可以“猜测”什么是回复的内容types,尽pipe它不包括在内。

在我的情况下,Safari报告了两个错误

  1. 在http:// myip中阻止脚本执行,因为文档的框架已被沙箱化,并且未设置“允许脚本”权限。
  2. 沙盒http://myip/image.jpg “,因为它使用的是HTTP / 0.9。

第一个错误导致浏览器拒绝加载我的JavaScript和jquery.js。 当然之后,AJAX将无法正常工作。 在桌面的Firefox也唠叨关于格式不正确的JSON回复,但仍然工作正常。

我只是简单地改变了实现,这样HTTP回复将在实际数据之前总是包含HTTP版本,状态代码和Content-Type。 例如,当浏览器发送请求GET / HTTP/1.1 ,服务器不仅仅发送默认网页,而是包括

 HTTP/1.1 200 OK Content-Type: text/html 

之后,所有的错误消失。 看来Safari的新版本不喜欢接收HTTP / 0.9,并将沙箱的回报。

有相同的问题(iOS 9.3.3 Safair / 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请求该页面