$ .ajax请求无法使用Cordova 5.3.3 Android应用程序

时间:2015-11-19 18:07:38

标签: ajax cordova whitelist

我有一个Cordova应用程序,其中第一个页面是向外部服务器发出Ajax请求的登录。

我添加了Content-Policy-Security元标记,如下所示: $.ajax

登录函数被调用并被访问,但$.support.cors = true;函数似乎完全被忽略。

在调用该函数之前,我已设置

config.xml

在我的<feature name="Whitelist"> <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" /> </feature> <access origin="*" subdomains="true" /> <allow-navigation href="*" /> <access origin="http://*.nutshellapps.co.uk" /> <allow-navigation href="http://*.nutshellapps.co.uk" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 文件中,我有以下

nutshellapps.co.uk

我已将上述所有内容添加为预防措施。

http://*.nutshellapps.co.uk子域名是人们将使用其凭据登录的域名。所以我已将$.ajax({ url: serviceURL + "Json/Authentication/login", type: "GET", data: {'data':JSON.stringify(loginData)}, dataType: "jsonp", crossDomain: true, success: function(data) { console.log(data); }, error: function(jqXmlHttpRequest, textStatus, errorThrown) { console.log('error'); }); 添加到访问源。

我的元标记是否正确?

我混合使用内联样式和js,以及包含代码的css / js文件。

这适用于我使用过的早期版本的Cordova(3.5.0),但现在这会导致重大错误。如果我在浏览器上运行该应用程序,它工作正常,所以我显然知道它的白名单插件/跨域问题。

其他人有这个问题吗?

我的ajax电话在

之下
for a in [4,3,2,1,0]: 
    print(a)

print()

def fun(start = 4):
    if start >= 0:
        print(start)
        fun(start-1)

fun()

2 个答案:

答案 0 :(得分:1)

您发布的内容安全策略元标记似乎格式错误:

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

没有结束&#34;。

对于Cordova,你也想要有差距:协议集和Android https://ssl.gstatic.com,所以我建议尝试:

<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;">

如果你想指定不同的连接主机和default-src,你也可以在那里添加connect-src。

可以找到讨论这些问题的博文here

答案 1 :(得分:0)

我设法通过在index.html

的顶部添加以下内容来解决此问题
LifecycleModule

我意识到这并不完全安全,但我无法继续工作。

另外,我确保在我的config.xml中启动应用程序时加载了我的WhitelistPlugin

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