Javascript Angular http.get API请求-不存在“Access Control Allow Origin”标头

Javascript Angular http.get API请求-不存在“Access Control Allow Origin”标头,javascript,angularjs,api,cors,Javascript,Angularjs,Api,Cors,我试图对某个API执行一个简单的get请求,但得到以下结果: 无法加载XMLHttpRequest . 请求的服务器上不存在“Access Control Allow Origin”标头 资源因此,原产地并非如此 允许访问 我尝试了许多不同的API,只是为了测试这是否是一个需要在我的目标API上启用的设置,或者这是否只是我尝试访问的任何ol'API的一般情况。我和他们都犯了这个错误,所以在这一点上,我一定是做错了什么 还要注意的是,我正在推heroku,所以它是在web服务器上运行的,而不是在本

我试图对某个API执行一个简单的get请求,但得到以下结果:

无法加载XMLHttpRequest . 请求的服务器上不存在“Access Control Allow Origin”标头 资源因此,原产地并非如此 允许访问

我尝试了许多不同的API,只是为了测试这是否是一个需要在我的目标API上启用的设置,或者这是否只是我尝试访问的任何ol'API的一般情况。我和他们都犯了这个错误,所以在这一点上,我一定是做错了什么

还要注意的是,我正在推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。或者类似的。但我正在尝试谷歌,显然他们应该允许跨站点请求,所以这一定是我做错了什么。谢谢你的帮助

您遇到的问题很常见。您遇到的是同一原产地政策。为了更好地理解您面临的问题,请通读其中的一些信息,但在较高的层次上,您不能从JavaScript中的不同域调用另一个域。有一些变通方法,比如JSONP和CORS,但我建议将API调用移动到服务器端代码,这样您就不会遇到这种情况


同一原产地政策。您可以使用CORS、JSONP或将API调用移动到服务器,但您希望使用纯客户端代码访问域之外的域。您是说请求客户端是可能的,但仅使用某种库或特殊方法?或者您是说唯一可能的方法是将请求移动到服务器端,而这是不可能的客户端?谢谢。这是一个令人困惑的答案。研究什么是同源策略,以及使用客户端和。你所看到的问题很普遍,只有几种解决办法。如果您有一个类似服务器的节点可用,您可以将请求移动到该节点,它将正常工作。是的,所有这些都在节点中运行。所以我将把请求移到node。感谢您的反馈和资源!那是最好的选择。在您的节点服务器上创建一个RESTAPI,作为您试图访问的API的“中间件”,并只调用您自己的端点。很有魅力