适用于Android的Cordova应用程序(在XDK中构建)通过HTTPS阻止Ajax请求

时间:2016-03-29 04:14:57

标签: android ajax cordova https

首先,通过http的常规Ajax请求工作正常。当我尝试通过https执行完全相同的Ajax请求(GET)时,问题就开始了。

在使用WEINRE进行调试时,我可以在网络选项卡中看到请求处于暂挂状态,但是我得到假的空响应,其中包含status = 0和其他属性为空。不仅如此,服务器端也永远不会得到这些请求。看起来Android就是不让它们走了。

在构建应用之前,我在XDK的构建设置中设置了通配符*<access><allow-intent><allow-navigation>。我还添加了以下CSP:

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

其他事实:

1)如果我为iOS构建相同的应用程序,它可以正常工作。所以这只是Android的麻烦。

2)基于https的Ajax请求有时在Android中有效,但很少。所以我不能说它们每次都被阻止,但是我也无法找到它工作时的条件,什么时候也没有。但大多数时候它都不起作用。

3)它前段时间工作正常。我正在谈论的行为不久前出现了。我认为这个问题可能与服务器端的SSL证书有关(例如,它已过期),但桌面浏览器不会报告任何问题。 URL字符串仍为绿色。

2 个答案:

答案 0 :(得分:0)

在menifest.xml文件中授予权限 与

  

<uses - permissions>

标签

答案 1 :(得分:0)

确认!问题出在SSL证书上。 Firefox中也无法访问服务器。我改变了证书后,一切都开始正常。