Cordova内容安全政策

Lar*_*rsi 15 cordova azure-mobile-services content-security-policy ionic-framework visual-studio-cordova

我有一个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">
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

拒绝加载脚本' 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".

我尝试过应该允许一切的默认策略,但仍然没有运气.

我还在config.xml文件中添加了以下内容

<access origin="*" />
<allow-navigation href="*" />
Run Code Online (Sandbox Code Playgroud)

并使用以下插件:

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"
Run Code Online (Sandbox Code Playgroud)

任何想法是什么尝试?

Ste*_*edy 30

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

*://*.example.com:* 
Run Code Online (Sandbox Code Playgroud)

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

对你而言,这里的关键可能是上面的粗体部分.

你指的是:

localhost:1337

*.ajax.aspnetcdn.com
Run Code Online (Sandbox Code Playgroud)

但是还在呼唤

http://ajax.aspnetcdn.com

http://localhost:1337
Run Code Online (Sandbox Code Playgroud)

也许改成

<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">
Run Code Online (Sandbox Code Playgroud)

我正在指定端口,但您可以用*替换"http"

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


Lar*_*rsi 7

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

我删除了所有插件

   cordova platform rm android
   cordova platform add android
Run Code Online (Sandbox Code Playgroud)

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