Cordova 内容安全策略
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">
我收到以下错误:
Refused to load the script 'http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net localhost:1337 *.ajax.aspnetcdn.com".
Refused to load the script 'http://localhost:1337/vorlon.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net localhost:1337 *.ajax.aspnetcdn.com".
我试过应该允许所有内容的默认策略,但还是不行。
我还在我的 config.xml 文件中添加了以下内容
<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"
知道要尝试什么吗?
接受通配符,但仅作为方案、端口或主机名最左侧的位置:
*://*.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">
我正在指定端口,但您可以将 "http" 替换为 *
希望这对您有所帮助,或引导您朝着正确的方向前进。
我的plugin/platform好像有问题。
我删除了所有插件
cordova platform rm android
cordova platform add android
然后重新添加插件,一切正常。
我在尝试为 Cordova 5 安装 cordova-plugins-whitelist 时遇到了这个问题。这是安装日志:
正在为 android
安装 "cordova-plugin-whitelist"
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 中不再是必需的!!
我有一个 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">
我收到以下错误:
Refused to load the script 'http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net localhost:1337 *.ajax.aspnetcdn.com".
Refused to load the script 'http://localhost:1337/vorlon.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.azure-mobile.net localhost:1337 *.ajax.aspnetcdn.com".
我试过应该允许所有内容的默认策略,但还是不行。
我还在我的 config.xml 文件中添加了以下内容
<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"
知道要尝试什么吗?
接受通配符,但仅作为方案、端口或主机名最左侧的位置:
*://*.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">
我正在指定端口,但您可以将 "http" 替换为 *
希望这对您有所帮助,或引导您朝着正确的方向前进。
我的plugin/platform好像有问题。
我删除了所有插件
cordova platform rm android
cordova platform add android
然后重新添加插件,一切正常。
我在尝试为 Cordova 5 安装 cordova-plugins-whitelist 时遇到了这个问题。这是安装日志:
正在为 android
安装 "cordova-plugin-whitelist"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 中不再是必需的!!