2

我正在用cordova 构建一个应用程序。我正在使用phonegap servephonegap 开发人员应用程序加载应用程序。

index.html

<meta http-equiv="Content-Security-Policy" content="default-src gap: file: tel: *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline' *">

(我也试过没有file: tel:,结果是一样的)

我可以验证这是正确准备的platforms/browser/www/index.html

然后我在 iPad 上打开 phonegap 应用程序,我运行phonegap serve,我打开 Safari 开发工具,按下连接,它是:

Refused to load gap://ready because it appears in neither the child-src directive nor the default-src directive of the Content Security Policy.

index.html我可以看到该指令已转换为:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">

有没有办法让 ipad 正确加载指令?

编辑

我也试过用 CSP 指令编译 phonegap 应用程序开发人员index.html,结果是一样的

编辑 - 1

我还从http://192.168.1.130:3200/__api__/appzip(这是我的phonegap serve服务器所在的位置)下载了 zip 文件,并且index.html已经转换了!

奇怪的是它platforms/browser/www/index.html没有被转换,所以中间有一些过程正在转换 CSP。

在我的config.xml我有这个指令:

<content src="index.html" />
<access origin="*" />
<access origin="cdvfile://*" />
<access launch-external="yes" origin="tel:*" />

<!-- Allowed WebView navigations -->
<allow-navigation href="http://*"/>
<allow-navigation href="https://*"/>
<allow-navigation href="http://*/*"/>
<allow-navigation href="https://*/*"/>
<allow-navigation href="data:*"/>
<allow-navigation href="about:*"/>
<allow-navigation href="tel:*"/>
<allow-navigation href="gap:*" />
<!-- Allowed URLs to be opened from the app -->
<allow-intent href="http://*"/>
<allow-intent href="https://*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-intent href="geo:*"/>
<allow-intent href="cdvfile://*" />
4

1 回答 1

0

它与这个问题有关:https ://github.com/creationix/nvm/issues/1361

主要是,bash 检测到 v6.4.2 并指向它(which phonegap指向正确的版本),但是phonegap从命令行执行时,它正在执行 v6.0.2,这可能没有设置正确的 CSP。

于 2016-12-27T09:37:41.407 回答