在网页中,我想从某个网址下载数据。(只是一个谷歌API)。 由于我想要跨域访问,我应该使用" jsonp"。 但是url(google api)只返回json,我无法修改格式。 A" jsonp"请求始终抛出"未捕获的SyntaxError:意外的令牌:"错误。
当然,我可以将后端服务器设置为代理。 有没有办法只在客户端解决这个问题?
答案 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的更多信息: