2016-07-22 144 views
1

我剛剛升級我的iOS因爲最近security bug,我發現我的網站不再正確加載我的手機上!Safari iOS未加載Javascript文件?

我煮的問題降到一個簡單的例子...

的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中的「所有資源」選項卡下。

對此提出建議?

感謝,

比爾


編輯: 這個問題已經變得沒有反應,但我仍然有這個問題摔跤。我找到了更多的信息。

的Safari WebInspector我發現的JavaScript沒有加載,因爲......

在「http://192.168.133.1/demo.html」,因爲 文檔的幀是沙箱和「允許的腳本」允許阻止腳本執行未設置 。

由於我在esp8266上爲本土網頁服務器提供此頁面,因此此消息激發了我調整了HTTP標頭。 HTTP標頭看起來很好。

我無法弄清楚如何HTML頁面首先得到沙盒,以及如何將「允許的腳本」,這樣我可以運行我在Safari移動腳本。

任何幫助將不勝感激。

回答

-1

有同樣的問題(的iOS 9.3.3薩法航空/ Chrome和OSX上使用Safari 9.1.2)。

的原因是,我們使用的是JavaScript庫嘗試加載我們所有圖像的視網膜版本。不知怎的,請求使用HTTP發送/ 0.9,而不是HTTP/1.1這讓Safari會自動沙盤上的所有以下請求整個頁面(錯誤消息說,類似「自動沙盒......因爲HTTP的/ 0.9」)。 9.3.3的iOS的安全更新日誌(https://support.apple.com/en-us/HT206902)提到下CVE-2016-4651相關的東西。

確保您的網絡服務器支持HTTP/1.1和您在使用HTTP/1.1

2

我爲我的Arduino項目實現Web服務器功能,當有完全相同的問題請求的頁面。我的web服務器實現在桌面瀏覽器和iOS中的Chrome(9.3.5)上運行良好。我在iOS中遇到了Firefox(5.1(1))和Safari的問題。我的網頁使用包括jQuery的腳本。腳本用於通過AJAX/JSON從Arduino傳輸數據。

問題出在我用作實現的基礎的例子中。在這些例子中,在OK的情況下,web服務器對瀏覽器的HTTP GET請求的回覆不包含除請求的實際文檔以外的任何內容。在這種情況下,Web瀏覽器認爲Web服務器正在使用HTTP/0.9。另外,缺少Content-Type。大多數瀏覽器可以「猜測」回覆的內容類型,儘管它不包括在內。

在我的情況下,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,並且會對沙盒的內容進行沙盒處理。

+0

這解決了我的問題 –