【问题标题】:Cordova / Android app, $.getJSON request isn't workingCordova / Android 应用程序,$.getJSON 请求不起作用
【发布时间】:2016-02-10 00:03:54
【问题描述】:

这把我逼疯了!出于某种原因,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。

谢谢!

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

【问题讨论】:

    标签: android cordova cors


    【解决方案1】:

    天哪,我一写好并发布我的问题,我就知道这会发生!我只是在做更多研究时偶然发现了这个页面:

    Cordova CORS call not working

    在过去的版本中,我只是在 config.xml 中有这个:

    <access origin="*"/>
    

    但是,现在似乎还需要 cordova-plugin-whitelist !所以我添加了这个:

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

    ...重建它,它现在可以工作了!我不敢相信我浪费了 3 个小时的生命来修复它。哎呀

    【讨论】:

    • @CobusKruger - 因为我忘了它;)现在已经接受了。
    猜你喜欢
    • 1970-01-01
    • 2016-10-19
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2018-03-11
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多