我有一个简单的网站,我用AngularJS构建,它调用json数据的API。
但是我收到跨域原因问题是否存在此问题以允许跨域请求?
错误:
XMLHttpRequest无法加载http://api.nestoria.co.uk/api?country=uk&pretty=1&action=search_listings&place_name=soho&encoding=json&listing_type=rent。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http:// localhost'因此不允许访问。
searchByPlaceName: function() {
var url = baseurl+'country=uk&pretty=1&action=search_listings&place_name=london'+encoding+type;
return $http.get(url);
}
答案 0 :(得分:14)
似乎api.nestoria.co.uk
不允许使用CORS。它必须设置Access-Control-Allow-Origin
标题本身 - 你无法直接控制它。
但是,您可以使用JSONP。该网站允许通过callback
查询参数。
$http.jsonp(baseurl+'country=uk&pretty=1&action=search_listings&place_name=london'
+encoding+type + "&callback=JSON_CALLBACK")
答案 1 :(得分:2)
安装Fiddler。向其添加自定义规则:
static function OnBeforeResponse(oSession: Session)
{
oSession.oResponse.headers.Add("Access-Control-Allow-Origin", "*");
}
这将允许您从localhost发出跨域请求。如果API是HTTPS,请确保启用“解密HTTPS流量”#39;在提琴手。
-------------------- UPDATE
你得到的回应是JSON。将JSONP指定为数据类型将不起作用。当您指定JSONP时,返回应该是一个函数而不是JSON对象。