我在我的一个api上获得json结果时遇到了问题:
尝试使用以下代码调用它:
var url = 'domain.com/'
var query = $http({
method: 'GET',
url: url,
headers: {'Content-Type': 'application/json'}
});
console.log(query);
我的控制器上有一个简单的$ http get
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 :
如果你使用网络浏览器查看网址它是一个有效的json对象,那就太怪了。
答案 0 :(得分:1)
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
您通过尝试从传递调用JS的域外部域中的XHR数据来违反单一来源策略。 使用XHR检索的数据必须来自提供站点的同一主机和端口。 这是为了防止跨站点脚本攻击。
您可以使用JSONP解决此问题(我怀疑您的JSONP调用存在单独的问题,发布吗?)或者在API的响应中包含正确的标头,Access-Control-Allow-Origin:*;