这让我起了墙!出于某种原因 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应用程序调用时不行!
答案 0 :(得分:2)
在过去的版本中,我只是在 config.xml :
中有这个<access origin="*"/>
然而,现在似乎还需要cordova-plugin-whitelist!所以我补充说:
<plugin name="cordova-plugin-whitelist" version="1" />
...重建它,它现在有效!我无法相信我浪费了3个小时来解决这个问题。 Eugh