2019年1月8日 星期二

cordova 寫在index內的javascript無法執行

以cordova開發app時,在檔案內直接寫入如下
<script>
....
</script>

在Chrome的dev tool中檢查時出現下面的錯誤:
"cordova script Refused to execute inline script because it violates the following Content Security Policy....."

這是因為要降低XSS漏洞的風險,所以禁止了inline的javascript,這會使chrome把直接寫在index內的javascript語法以及一些行內事件如onClick的事件執行都擋住。

解決方法有兩種:

1.啟用行內的JS
在cordova專案的index.html上面也有標注:
Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
所以只要把unsafe-inline 加進 default-src內即可,如下
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
2.把script另外寫成一個js檔案,再連結進來即可

沒有留言: