【发布时间】:2016-02-22 22:41:29
【问题描述】:
我设置了一个 PhoneGap 项目并通过 PhoneGap 桌面启动它。 在这个项目中,我调用了以下 jQuery 方法:
$.ajax({
type: 'GET',
url: 'http://api.fixer.io/latest',
dataType: 'json',
success: function(data){
exchangeRates = data;
displayData(exchangeRates);
}
})
一旦我使用按钮触发它,我会收到 403“禁止”响应。 请求的网址是:http://192.168.178.40:3000/proxy/http://api.fixer.io/latest
这是PhoneGap Desktop加载应用程序和代理的本地Serveradress(192.168.178.40:3000),这似乎也来自PhoneGap。 发送的请求头是这样的:
Host: 192.168.178.40:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://192.168.178.40:3000/
Cookie: connect.sid=s%3AhoA3oe0JbAdmGQ4Z6bYlRuFa.oDM1qjeHCadzwfSmYy%2BFabG0b22OH0ZqRgVuLMlcCL8
Connection: keep-alive
响应头如下:
Connection: close
Content-Type: text/plain
Date: Fri, 20 Nov 2015 12:07:23 GMT
Server: nginx/1.4.6 (Ubuntu)
Status: 403 Forbidden
Transfer-Encoding: chunked
当我尝试打开请求的 URL 时,它会提供我想要的 JSON。
为什么我会得到 403?有人可以帮忙吗?
[成功后编辑]
好吧,好像我在我设置的 PhoneGap 项目中遇到了问题,因为
Simon Pricketts 的建议似乎是正确的。
所以我建立了一个全新的项目。这次是没有 PhoneGap 覆盖的直接 Cordova 5.4.0 项目。然后我再次尝试了 Simons 的建议,瞧 ---> 这次成功了!
结论:PhoneGap 项目的 config.xml 与 Content-Security-Policy 结合导致 App 出现故障,导致 403 错误。由于我对 PhoneGap 不太熟悉,所以我尝试了直接使用 Cordova,效果很好。
【问题讨论】:
-
它提供了我想要的 JSON,但是如果你看到控制台,你可以找到实际的问题。一种解决方案是使用填充手段
jsonp响应 json 以进行跨域数据共享。
标签: jquery ajax cordova http-status-code-403