Я использую Cordova 6.3.0 и запросы AJAX с устройств Android не работают. Я уже прочитал и попробовал что-нибудь полезное, которое мог найти, и сам не могу решить эту проблему.Запросы AJAX не работают (не удалось выполнить 'open'): Cordova Android
Я использую запрос JQuery Ajax для вызова сервера, который возвращает определенную пользователем информацию (простые целые числа):
$.ajax({
url : ENDPOINT_SERVER_API, // e.g. http://www.example.com
async: false,
success: function(data, status) {
// display normal UI
// render view
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
я установил cordova-plugin-whitelist
и она указана в config.xml
с помощью <plugin name="cordova-plugin-whitelist" spec="1" />
.
Кроме того, я использовал и попытался несколько различных <meta http-equiv="Content-Security-Policy" .../>
теги, такие как:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://example.com:*">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' example.com">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' http://*.example.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
Мой config.xml
выглядит следующим образом:
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" subdomains="true"/>
<allow-navigation href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
сообщение об ошибке, что я получаю это :
{"stack":"Error: Failed to execute 'open' on 'XMLHttpRequest':
Refused to connect to 'http:\/\/mydomain.com\/?action=get_user_specific_data&user=23afadf83bc3848'
because it violates the document's Content Security Policy.
at Error (native)
at Object.k.cors.a.crossDomain.send (file:\/\/\/android_asset\/www\/lib\/jquery.js:4:14351)
at Function.n.extend.ajax (file:\/\/\/android_asset\/www\/lib\/jquery.js:4:10579)
at null.<anonymouse> (file:\/\/\/android_asset\/www\/js\/app.js:63:10)
at Channel.fire (file:\/\/\/android_asset\/www\/cordova.js:822:23)
at file:\/\/\/android_asset\/www\/cordova.js:231:49"}
Теперь, я также прочитал plugin documentation, но не могут найти обходной путь к этой проблеме.
Проблема возникает только для Android, iOS работает как шарм.
Как я могу это решить?
Любая помощь была бы принята с благодарностью!
Вы позволили перекрестный доступ к ресурсам из стороны сервера? –
Думаю, что да; я добавил 'header ('Access-Control-Allow-Origin: *');' на страницу, обслуживающую пользовательский контент. – dabe
как вы создали сборку Android? –