有没有办法在不修改服务器端的情况下进行跨域请求获取纯json数据?

时间:2014-11-04 07:50:11

标签: javascript ajax json cross-domain jsonp

在网页中,我想从某个网址下载数据。(只是一个谷歌API)。 由于我想要跨域访问,我应该使用" jsonp"。 但是url(google api)只返回json,我无法修改格式。 A" jsonp"请求始终抛出"未捕获的SyntaxError:意外的令牌:"错误。

当然,我可以将后端服务器设置为代理。 有没有办法只在客户端解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果数据是公开的并且Google已使用Access-Control-Allow-Origin: *标头在其服务器上启用了CORS,那么除了使用XMLHttpRequest对象的简单HTTP请求之外,不需要其他任何内容。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.google.com/some.json');

xhr.onload = function(e) {
  var data = JSON.parse(this.response);
  console.log(data);
}

xhr.send(null);


如果上面的示例失败,则意味着数据不公开,并且需要某种身份验证 - 例如OAuth2,在这种情况下,使用提供的(后端)库进行操作会更容易的OAuth。

您可以在此处了解有关CORS的更多信息: