跨域$ http请求AngularJS

时间:2014-03-20 22:07:41

标签: json angularjs http cross-domain

我有一个简单的网站,我用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);
    }

2 个答案:

答案 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;在提琴手。

Reference

-------------------- UPDATE

你得到的回应是JSON。将JSONP指定为数据类型将不起作用。当您指定JSONP时,返回应该是一个函数而不是JSON对象。

JSONP