1

我正在开发一个 Cordova Android 移动应用程序。使用 Sencha touch 作为 UI 框架。在应用程序中即时进行 Web 服务调用。它曾经可以在旧版本的 Cordova 上正常工作,最近将 Cordova proj 升级到 5.0.0,从那时起就无法在新版本的 Android 设备上访问任何 Web 服务。我在项目中包含了白名单插件。在 index.html 中还包含以下元标记

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

配置.xml:

<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />

运行应用程序时抛出以下错误,

"Refused to connect to 'http://my-server-url.ss.yy.com:8080/SomeServ/rest/someapp/appdata?_dc=1433398248330' because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.

我无法从这里继续前进。在谷歌上尝试了很多建议,但没有用。请指导我这里缺少的是什么。

注意:在应用程序中我连接到多个服务器。

提前致谢!!

4

2 回答 2

6

您需要在元标记上添加服务器 URL,这样:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' my-server-url.ss.yy.com:8080  data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *">

然后安全策略将允许连接到my-server-url.ss.yy.com:8080 。

于 2015-08-06T12:01:23.817 回答
5

改变:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

至:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://my-server-url.ss.yy.com:*">

现在可以连接到您的服务器了。

注意 如果您连接到更多服务器,则需要扩展此规则。

于 2015-06-04T08:32:20.160 回答