AJAX请求无效(无法执行'打开'):Cordova Android

时间:2016-07-29 12:49:19

标签: android jquery ajax cordova cordova-plugins

我使用的是Cordova 6.3.0,Android设备的AJAX请求无法正常工作。我已经阅读并尝试了一些我能找到的有用的东西,而且我自己无法解决这个问题。

我正在使用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就像魅力一样。

我该如何解决这个问题?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我在config.xml

中添加了相同的问题
    <allow-navigation href="*" />

     <access origin="*"/>

我的HTML

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