Политика конфиденциальности контента Cordova

У меня есть приложение Cordova, и после обновления (5.0.0) я не могу вообще вызвать какой-либо ресурс. Я добавил плагин whitelist и добавил следующий тег в 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">

У меня появились следующие ошибки:

Отказался от загрузки script 'http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js, потому что он нарушает следующую директиву политики безопасности контента: "script -src" self "небезопасно -inline '' небезопасно-eval '*.azure-mobile.net localhost: 1337 *.ajax.aspnetcdn.com".

Отказался от загрузки script 'http://localhost:1337/vorlon.js, потому что он нарушает следующую директиву политики безопасности содержимого: "script -src" self' 'небезопасно -inline '' небезопасно-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"

Любая идея, что попробовать?

Ответы

Ответ 1

Кажется, что что-то не так с моим плагином/платформой.

Я удалил все плагины

   cordova platform rm android
   cordova platform add android

Затем читаем плагины, и все работает.

Ответ 2

Подстановочные знаки принимаются, но только как схема, порт или в самой левой позиции имени хоста:

*://*.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" на *

Надеюсь, это поможет или приведет вас в правильном направлении.

Ответ 3

У меня возникла эта проблема при попытке установить Cordova-plugins-whitelist для Cordova 5. Вот журнал установки:

Установка "cordova-plugin-whitelist" для 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!!