当前位置: 首页 > 面试题库 >

CORS和Angular $ http GET到Google Places API

岑光熙
2023-03-14
问题内容

Angular的新手,它尝试使用Google Maps / Places API设置一个非常简单的应用程序

我可以通过以下方式成功使用地理位置服务:

.controller('MainCtrl', [
  '$scope',
  '$http',
  function($scope, $http){
     $scope.userLocation = [];
     $scope.currentLocation = function() {
       $http({
         method: 'GET',
         url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=xxx'
    }).then(function successCallback(response) {
      $scope.userLocation.push(response);
    });
   }
}])

问题: 当我尝试对他们的Places API进行类似的GET请求时-我收到CORS错误:

XMLHttpRequest cannot load https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=36.23…5.1458888&type=bar&key=xxx. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://0.0.0.0:3000' is therefore not allowed access.

问题: 我是否可以从Angular发出这些类型的请求,还是需要设置后端来进行该调用?

我尝试使用JSONP作为方法,该方法通过了CORS问题,但随后出现无法访问数据的问题。不知道它是否是无效的JSON …,但显示为Unexpected identifier :,当我查看源代码时,对我来说似乎是非常好的数据:

{
   "html_attributions" : [],
   "results" : [
      {
         "geometry" : {
            "location" : {
               "lat" : 36.2388477,
               "lng" : -115.1540073
            },
         },
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "578bfba1f17b0c5fbdafd5b71600b50d3e95c1ca",
         "name" : "Ruby Tuesday",
         "opening_hours" : {
            "open_now" : true,
            "weekday_text" : []
         },

问题答案:

您可以通过Google Maps JavaScript API中包含的库在客户端使用Places API。

请参考此页面以了解其工作方式:

https://developers.google.com/maps/documentation/javascript/places

否则,您必须创建后端服务器才能将请求发送到Google,并将响应传递给客户端代码。

希望能帮助到你!



 类似资料:
  • 问题内容: 我有一个基于@RestController和AngularJS的简单项目。我可以将Angular的GET请求发送到@RestController,但无法发送POST请求。我在浏览器控制台中出错: XMLHttpRequest无法加载http:// localhost:8080 / add 。Access-Control-Allow- Headers不允许请求标头字段Content-Ty

  • 关于这个问题有很多讨论,但是没有一个对我有用。我有一个asp.net核心api 2.1与角7应用程序。 错误: “车队:1次访问位于的XMLHttpRequest”https://localhost:44354/api/test“起源”http://localhost:4200'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头。" 启动: 配置

  • 我一直试图找到一个解决方案,在我的angular应用程序上启用cors,该应用程序由一个带有Slim API框架的PHP提供服务。

  • 我有一个正确配置CORS的spring MVC API后端,当我尝试进行ajax调用时,我在chrome中遇到以下错误 XMLHttpRequest无法加载172.20.16.45:8082/Cuponza.请求被重定向到“172.20.16.45:8082/Cuponza/”,这对于需要预飞行的跨原点请求是不允许的。 我试着用标志-disable-web-security启动chrome,通过这

  • 我有ASP。NET核心API及其在Angular 5中的应用。我在启动中添加了代码。cs启用cors并允许所有来源,但它仍然给了我一个错误 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:4200因此,不允许访问。响应的HTTP状态代码为500。 下面是我的web api代码:

  • CORS在服务器上运行良好,并按预期工作。我尝试用angular HTTPClient向服务器的RESTAPI发送请求,但收到一个CORS错误。如果服务器上启用了CORS,为什么会出现此错误?这对客户来说不是很好吗?