Cordova内容安全政策

时间:2015-05-11 16:14:52

标签: cordova ionic-framework azure-mobile-services visual-studio-cordova content-security-policy

我有一个Cordova应用程序,升级后(5.0.0)我根本无法调用任何资源。我添加了白名单插件,并将以下标记添加到index.html

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net localhost:1337 *.ajax.aspnetcdn.com">

我收到了以下错误:

  

拒绝加载脚本“http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js”,因为它违反了以下内容安全策略指令:“script-src'self''unsafe-inline''unsafe-eval'* .azure-mobile.net localhost :1337 * .ajax.aspnetcdn.com“。

     

拒绝加载脚本“http://localhost:1337/vorlon.js”,因为它违反了以下内容安全策略指令:“script-src'self''unsafe-inline''unsafe-eval'* .azure-mobile.net localhost :1337 * .ajax.aspnetcdn.com“。

我尝试过应该允许所有内容的默认策略,但仍然没有运气。

我还在配置文件

中添加了以下内容
<access origin="*" />
<allow-navigation href="*" />

并使用以下插件:

C:\Projects\TavlaApp>cordova plugin
com.microsoft.azure-mobile-services 1.2.7 "Windows Azure Mobile Services"
cordova-plugin-whitelist 1.0.1-dev "Whitelist"
nl.x-services.plugins.calendar 4.3.4 "Calendar"
nl.x-services.plugins.insomnia 4.0.1 "Insomnia (prevent screen sleep)"
org.apache.cordova.inappbrowser 0.6.0 "InAppBrowser"

任何想法都应该尝试什么?

3 个答案:

答案 0 :(得分:30)

接受通配符,但仅作为方案,端口或主机名的最左侧位置:

*://*.example.com:* 

...这将匹配example.com的所有子域(但不是example.com本身),使用任何方案,在任何端口上。

此处的关键可能是上面粗体中的部分。

您正在指定:

localhost:1337

*.ajax.aspnetcdn.com

但是还在呼唤

http://ajax.aspnetcdn.com

http://localhost:1337

也许改为

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net http://localhost:1337 http://ajax.aspnetcdn.com">

我指定端口,但您可以替换&#34; http&#34;与*

希望这有助于或引导您朝着正确的方向发展。

答案 1 :(得分:7)

我的插件/平台似乎有问题。

我删除了所有插件

   cordova platform rm android
   cordova platform add android

然后读取插件,一切正常。

答案 2 :(得分:-4)

我在尝试为Cordova 5安装cordova-plugins-whitelist时出现此问题。这是安装日志:

安装“cordova-plugin-whitelist”for android

This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.

正如我们所看到的,Cordova v5 !!中不再需要这个插件了。