2011-08-22 95 views
3

我正在構建一個帶有phonegap的jQuery移動應用程序。 當我嘗試訪問iframe中的頁面(Maybe webkit)時,存在Unsafe JavaScript attempt to access frame的問題。框架頁面和父頁面都在本地,它以file:///開頭。我知道這個問題在哪裏Unsafe JavaScript attempt to access frame in Google Chrome但我不能在我的手機上登錄passing the --allow-file-access-from-files switch at startup。而且我也不想在internet上部署我的應用程序。是還有其他的選擇來解決這個問題嗎?應該更好,我不需要對瀏覽器做任何修改。謝謝。不安全的JavaScript嘗試訪問帶有URL的框架。它是本地的

回答

2

我不確定Webkit是否遵循相同的規則,但有一個先例。

https://developer.mozilla.org/en/Same-origin_policy_for_file%3a_URIs

在壁虎1.8或更早版本中,任意兩個文件:URI被認爲是 同源。換句話說,本地磁盤上的任何HTML文件都可以 讀取本地磁盤上的任何其他文件。

從Gecko 1.9開始,允許文件只讀取某些其他 文件。具體而言,只有當源文件的父目錄 目標文件的祖先目錄是文件時,才能讀取其他文件。然而,目錄無法以這種方式加載。例如,如果您有一個訪問另一個文件 bar.html的文件foo.html,則只有當bar.html與foo.html位於相同的 目錄中或包含的目錄中時,加載纔會成功在與foo.html相同的 目錄內。

此政策會影響所有進行同源檢查的內容,包括 XMLHttpRequest,XSLT和XBL。

對於跨窗口DOM的訪問,每個文件被視爲一個單獨的 原點,但有一個例外:如果一個文件被從另一文件中加載的是 ,否則能夠加載它下面的這個同源策略, 他們被認爲具有相同的起源。這種負載可以通過子幀,鏈路,位置集合,調用window.open()或 之類的發生在 。

例如,如果該文件是/home/user/foo.html一個框架和一個 幀是/home/user/subdir/bar.html,框架和框架集是 視爲共享相同的起源。另一方面,如果文件 /home/user/subdir/foo.html是框架集並且框架是 /home/user/bar.html,則框架和框架集被認爲具有不同的起源。

新security.fileuri.strict_origin_policy偏好,這 默認爲true,可以設置爲false,如果用戶不希望 嚴格執行文件中的同源策略:URI的。

+1

感謝您的建議。但我已經把兩個文件放在一個目錄中。Firefox運行得很好,但基於webkit的瀏覽器失敗。 – Shisoft

相關問題