访问控制允许来源问题和角$ http服务
问题描述:
对不起复制这个问题的一个问题,但我真的试图寻求一个解决方案,但我找不到它。所以我使用angular $ http.get xhr请求从public api中检索数据。我有一个代码
$http.get('http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes&year=2000&sold_in_us=1')
.success(function(d){ console.log(d); })
.error(function(d){ console.log("nope");
});
这个返回控制台:
XMLHttpRequest cannot load http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes&year=2009. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'blah-my-localhost-blah' is therefore not allowed access.
但是,如果我用户的jQuery的getJSON方法只是正常工作:
$.getJSON("http://www.carqueryapi.com/api/0.3/?callback=?", {cmd:"getMakes", year:"2009"},
function(data) {
console.log(data);
});
所以,很显然,我可以配置的角度发送正确的请求,因为jQuery工作正常?
谢谢你的回应。
答
使用$http.jsonp方法做JSON_CALLBACK为回调名字一起JSONP请求:
$http.jsonp('http://www.carqueryapi.com/api/0.3/?callback=JSON_CALLBACK&cmd=getMakes&year=2000&sold_in_us=1')
.success(function(d){ console.log(d); })
.error(function(d){ console.log("nope"); });
+0
什么是奇怪的'回调= JSON_CALLBACK'参数呢?一些解释将不胜感激。 – scaryguy 2016-05-25 19:09:10
的Jquery的getJSON使用JSONP回调以来参数,URL – danronmoon 2014-09-27 22:56:33
角度存在不使用''呢?回调的方式jQuery的...阅读正确的回调字符串的文档,并使用'$ http.jsonp'https://docs.angularjs.org/api/ng/service/$http#jsonp – charlietfl 2014-09-27 22:59:08