cordova 5.3.3 android平臺開發忽略的安全設置

兩年前就接觸phonegap,也嘗試做了一個小的東西在移動平臺上。沒有深入嘗試和了解,今年有個項目用H5來做展示,同時也有在移動平臺上應用的需求。我就想到了phonegap,現在變更爲Cordova。搭建環境這裏就不描述了可以參考cordova官方網站

移動終端應用比較簡單,包括登錄、消息列表、通知列表、全文檢索、簽到。

很快就實現了這幾個功能,在chrome瀏覽器上測試通過,通過cordova build android 進行打包。進行真機測試。

在真機上測試結果也比較順利(版本android 4.0),所有功能在真機上都順利測試通過。

隨機在同事手機上進行測試(版本android5.0.1 ),第一個登錄功能就卡殼了,輸入用戶、密碼後點擊”登錄“功能沒有響應,考慮到可能是打包版本問題。

查看AndroidManifest配置

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
否定打包版本問題,配置版本範圍最高支持android5.1.1.如果打包android版本問題,App應該無法正常安裝。
於是各種原因查找,起初懷疑ajax方式不對,因爲所有數據交換都是需要跨域。嘗試各種不同跨域方式,在瀏覽器下功能正常。
但在真機版本高於android 4.1就不能正常使用,因爲在真機上我查看不了報錯的log,所有開始沒有頭緒,排除了很多原因。
在查找過程中看到一篇文章,說道真機測試log查看問題通過一段腳本
window.onerror = function (msg, url, line) {
    var idx = url.lastIndexOf("/");
    if (idx > -1) {
        url = url.substring(idx + 1);
    }
    alert("ERROR in " + url + " (line #" + line + "): " + msg);
    return false;
};  

終於看查看真機錯誤提示了


顯示是因爲安全問題導致,jquery腳本運行錯誤最終導致所有功能失效了。知道問題所在就好解決了。

查閱關於Content-Security-Policy資料,參考資料
頁面中包含<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap:http://192.168.0.55  'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

標紅的區域修改爲 獲取數據的IP地址,這樣就可以通過安全限制了。如果不計較安全方面的問題,可以去掉上面的內容。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章