Cordova / Android应用,$ .getJSON请求无效

时间:2016-02-09 15:43:51

标签: android cordova cors

这让我起了墙!出于某种原因 JSConsole.com 不能用于调试,因此它证明了一个真正的PITA进行调试。我正在使用 PhoneGap Build 来创建我的应用程序(WebView应用程序)。这一切都很好 - 但由于某种原因它停止了工作。我们一会儿转到 Nginx 服务器 - 看起来CORS的东西设置不正确。但是,我已经让它返回以下标题:

Access-Control-Allow-Meth...    
GET, POST, OPTIONS
Content-Type    
application/json
Date    
Tue, 09 Feb 2016 15:30:32 GMT
Server  
nginx/1.9.5
X-Firefox-Spdy  
h2
access-control-allow-cred...    
true
access-control-allow-head...    
DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Ty
pe
access-control-allow-orig...    
*

......但它仍然不起作用。

alert("before grab");

$.getJSON('https://exmple.net/cgi-bin/daily.cgi', { action: 'cat-list', u: device_id, t: device_type }, function(result) {

    alert("in here 1");
});

应用程序中的第一个警报正常,但第二个没有(这让我认为CORS的东西由于某种原因不起作用)。

Cordova和CORS有任何已知问题吗?我100%肯定它曾经工作 - 但我不确定它是否导致了这个问题的服务器移动,或升级到后来的Cordova。

谢谢!

UPDATE:为了确认它没有请求daily.cgi,我在其中添加了一些调试(以便在请求时在服务器上写入日志)。正如预期的那样,从浏览器调用时它可以正常工作 - 但是从Android应用程序调用时不行!

1 个答案:

答案 0 :(得分:2)

OMG,我知道一旦我写完并发布了我的问题就会发生这种情况!在进行更多研究时,我碰巧碰到了这个页面:

Cordova CORS call not working

在过去的版本中,我只是在 config.xml

中有这个
<access origin="*"/>

然而,现在似乎还需要cordova-plugin-whitelist!所以我补充说:

<plugin name="cordova-plugin-whitelist" version="1" />

...重建它,它现在有效!我无法相信我浪费了3个小时来解决这个问题。 Eugh