0

我在我的一个 api 上获取 json 结果时遇到问题:

尝试使用以下代码调用它:

var url = 'domain.com/'
var query = $http({
    method: 'GET',
    url: url,
    headers: {'Content-Type': 'application/json'}
});
console.log(query);

和一个简单的 $http 在我的控制器上获取

var url = $http.get('http://domain.com');
console.log(url);

总是给我

XMLHttpRequest 无法加载http://domain.com。Access-Control-Allow-Origin 不允许 Origin 域。

然后我尝试将方法类型从 GET 更改为 JSONP 但给了我一个

Uncaught SyntaxError: Unexpected token :

奇怪的是,如果您使用 Web 浏览器查看 url,它是一个有效的 json 对象。

4

1 回答 1

1

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

您尝试从传递调用 JS 的域外部的域 XHR 数据违反了单一来源策略。使用 XHR 检索的数据必须来自为站点提供服务的同一主机和端口。这是为了防止跨站点脚本攻击。

您可以使用 JSONP 解决此问题(我怀疑您的 JSONP 调用存在单独的问题,请发布它?)或通过在您的 API 的响应中包含正确的标头 Access-Control-Allow-Origin: *;

于 2013-08-16T10:39:31.083 回答