2017-03-31 44 views
0

我试图做一个角度简单get要求有一定的API,但我得到以下几点:角http.get API请求 - 无“访问控制允许来源”标头现在

XMLHttpRequest无法加载 https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&key=MY_KEY。 请求的 资源上没有“Access-Control-Allow-Origin”标题。原因'https://my-site.herokuapp.com'因此不是 允许访问。

我试过很多不同的API,只是为了测试它是否需要在我的目标API上启用的设置,或者它是否与我试图访问的任何ol'API一般。我得到了所有这些错误,所以在这一点上,我做错了GOTTA。

另外要注意的是,我推送到heroku,所以它启动并运行在Web服务器上,而不是本地主机上。

这里是我的下面角代码:

$http.get("https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&key=MY_KEY") 
       .then(function(response) { 
        vm.output = response.data; 
       }); 

我已经开了大约有一千浏览器标签搜索这个信息,许多人说“你不服务器你正在为有要求的。实施CORS从您的网站访问权限授予JavaScript。“或类似的东西。但我试图谷歌和明显他们应该允许跨站点请求,所以这是我做错了。谢谢你的帮助。

+0

同源策略。您可以使用CORS,JSONP或将您的API调用移动到服务器,但您希望使用纯客户端代码访问域外的域。 – mwilson

+0

你是说请求客户端是可能的,但只使用某种库或特殊方法?或者你是否说唯一可能的方法是将请求移到服务器端,并且这是不可能的客户端?谢谢。 – Kenny

+0

这是一个令人困惑的答案。查看同源策略是什么(https://en.wikipedia.org/wiki/Same-origin_policy),并查看使用客户端的解决方法(http://stackoverflow.com/questions/3839966/can-anyone- explain-what-jsonp-in-lay-man-terms和https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)。你看到的问题很常见,只有少数解决方案。如果你有一个服务器(如节点)可用,你可以将请求移到那里,它会正常工作。 – mwilson

回答

1

您遇到的问题很常见。您正在运行相同的来源策略。为了更好地理解您所面临的问题,请仔细阅读其中的一些信息,但在较高层次上,您无法从JavaScript中的其他域调用另一个域。有一些解决方法,比如JSONP和CORS,但我建议将API调用移到服务器端代码,以免碰到这个问题。

相关问题