如何使用CORS实现JavaScript Google Places API请求

Rya*_* Mc 11 javascript json google-api cors

我真的不明白我应该如何做这项工作:

var requestURL = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw';

console.log(requestURL);

$.getJSON( requestURL, function( data ) {
  // data
  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

和我的HTML文件:

  <body>

        <script
  src="https://code.jquery.com/jquery-2.2.4.min.js"
  integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
  crossorigin="anonymous"></script>
        <script src="main.js" charset="utf-8"></script>   
  </body>
Run Code Online (Sandbox Code Playgroud)

我总是在请求的资源上出现No'Access-Control-Allow-Origin'标头.消息...即使我在浏览器中访问https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw,我也会收到正确的JSON.

我认为CORS可以帮助我.我不懂CORS.请问,任何人都可以用简单的术语帮助我吗?我应该改变什么才能使这项工作?

谢谢

rd3*_*d3n 17

您正尝试在客户端使用Google Places API Web服务,而它是专为服务器端应用程序设计的.这可能是服务器未设置适当的CORS响应头的原因.

地方详细信息文档开头注释中所述,您应该使用Google Maps JavaScript API中的地方库:

如果您要构建客户端应用程序,请查看适用于AndroidGoogle Places API,适用于iOSGoogle Places API以及Google Maps JavaScript API中地方库.

注意:您需要先在Google Developer Console中启用Google Maps JavaScript API.

您可以通过以下方式获取地点详细信息(基于文档中示例):

<head>
    <script type="text/javascript">
        function logPlaceDetails() {
          var service = new google.maps.places.PlacesService(document.getElementById('map'));
          service.getDetails({
            placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4'
          }, function (place, status) {
            console.log('Place details:', place);
          });
        }
    </script>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAW4CQp3KxwYkrHFZERfcGSl--rFce4tNw&libraries=places&callback=logPlaceDetails"></script>
</head>
<body>
    <div id="map"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

Google Place详细信息输出到控制台

  • 由于rd3n的答案未回答您的问题,因此@RyanMc,可以将修改后的代码发布为答案吗?我很想看看你做了什么。 (3认同)