我發現我可以通過file://
上的頁面和使用iframe的contentWindow屬性託管在遠程主機上的iframe進行跨域通信。Cordova跨域文件:// iframe contentwindow communication
例如在設備上我的網址文件的HTML頁面://.../index.html加載科爾多瓦,幷包含一個iframe:
<script type="text/javascript" src="cordova.js"></script>
<iframe id="appframe"></iframe>
在這個頁面上,我可以執行加載的iframe和保存對象中的iFrame網頁這樣一個參考的javascript:
var iframe = document.getElementById("appframe");
iframe.onload = function(){
iframe.contentWindow.cordova = window.cordova;
}
iframe.src = "http://www.example.com/appframe.html";
現在的iframe,http://www.example.com/appframe.html裏面的頁面上,我可以執行科爾多瓦調用,例如:
cordova.exec(null, null, "StatusBar", "hide", []);
這意外的工作,調用StatusBar科爾多瓦插件的本地層和隱藏狀態欄。
我的問題是:
這是安全使用或不會在瀏覽器的未來版本中運行的黑客?
我在iOS 9和Android 5設備上測試過它。
如果appframe是從file:///提供的,則可以執行此項工作。 –
有趣。海事組織是非常不安全的,如果你不控制遠程網站 - 當他們知道你將代碼嵌入你的應用程序時,他們可以通過插件調整他們的代碼和'cordova.exec'你的應用程序支持的任何東西,並可能與其他一些錯誤相結合,實現特權升級。話雖如此,你需要明確地將對cordova的引用注入到iframe中才能工作,所以它不是一個安全漏洞,除非你願意。 –
@mircoc像你一樣我也試圖在iframe中加載html頁面(頁面大小從5Mb到100Mb),但是很多次應用程序崩潰時出現「內存不足」錯誤。你遇到過這種問題嗎?如果是的話,你能指導我如何解決這個問題嗎? – Deepika