2016-02-24 3 views
-1

Я обновляю некоторые проекты из старых версий Кордовы 2.x и 3.x до последней версии 5.1. Я вынужден сделать это, потому что в мае Google Play возьмет заложники pre-4.1.1 Cordova Apps (никаких новых представлений и обновлений для существующих приложений).Кордова 5: блокировка белых списков ajax вызывает

Унаследованные проекты, которые я обновляю, имели все URL-адреса, разрешенные в белом списке. Страница, загружаемая в WebView, включена в активы apk, но для операции важно сделать ajax-вызовы для URL-адресов удаленных ресурсов. Эти ресурсы были опубликованы компаниями-клиентами во всех видах доменов, и поскольку тысячи из них были безналичными, они были непрактичными.

Теперь с Cordova> 4 вам нужно скачать whitelist plugin, нравится вам это или нет. В новом файле config.xml у меня есть:

<allow-navigation href="*" /> 
<allow-intent href="*" /> 
<access origin="*" /> 

Но это не кажется достаточно. В logcat есть некоторые предупреждения о необходимости изменить мой HTML, чтобы включить Content Security Policy.

Поэтому я добавил это к моей странице:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

А теперь у меня есть проблема, потому что унаследованные приложения совместимы с Jellybean устройств, но белый список особенность плагина СНТ поддерживается только в устройствах KitKat.
Тем не менее, я тестировал обновленные приложения на устройстве Lollipop, а вызовы ajax продолжают блокироваться.

Есть ли способ перечислить все возможные домены без использования CSP, чтобы я мог запускать свои приложения в JellyBean?

Если нет, то какая была бы наименее ограничительная полиция безопасности контента? Видимо, подстановочный знак не работает.

ответ

0

Я только что нашел ответ сам.

Да, возможен белый список без использования функции CSP. Просто добавить эти символы в файл res/xml/config.xml достаточно:

<allow-navigation href="*" /> 
<access origin="*" /> 

Моя проблема была другой. JS белый список плагина и ява файлы присутствуют, но при обновлении конфигурационного файла в новый формат, я забыл добавить функцию для этого:

<feature name="Whitelist"> 
    <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" /> 
    <param name="onload" value="true" /> 
</feature> 

ПРИМЕЧАНИЕ ДЛЯ ВСЕХ Этот ответ не работает CLI. <feature> в этом контексте предназначен для SDK и тех, кто использует IDE. Обратитесь к документации The feature Element
Цитата:

При использовании интерфейса командной строки для создания приложений, можно использовать команду плагин для включения API-интерфейсов устройств.Это не изменяет файл config.xml верхнего уровня, поэтому элемент <feature> не применяется к вашему рабочему процессу.

Если вы работаете непосредственно в SDK и используете файл config.xml для конкретной платформы, вы используете тег <feature>, чтобы включить API-интерфейсы на уровне устройства и внешние плагины. Они часто появляются с пользовательскими значениями в файлах config.xml, специфичных для платформы.

0

Этот шаблон работает для меня в метатеге, попробуйте.

<meta http-equiv="Content-Security-Policy" content="img-src 'self' data:; default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

У меня есть такой же, как вы в файле config.xml, так что это должно работать

+0

Спасибо, я попробую, когда у меня будет время. –

 Смежные вопросы

  • Нет связанных вопросов^_^