【问题标题】:Getting a simple get using angular-$resource or $http使用 angular-$resource 或 $http 进行简单的获取
【发布时间】:2013-08-18 17:39:49
【问题描述】:

在我的一个 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 不允许使用源域。

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

Uncaught SyntaxError: Unexpected token :

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

【问题讨论】:

标签: angularjs


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,现在我创建了自己的 Web 服务并添加了标题,它可以工作了!。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
相关资源
最近更新 更多