谷歌的REST API的巨大问题:没有'Access-Control-Allow-Origin'标题



我正在尝试使用Google Directions API,该方向为小路由优化应用程序提供了JSON响应。我以前曾与Google Maps JavaScript API合作过,它非常容易使用,并且有据可查。问题是,我需要更多的应用程序点,而JavaScript API仅支持具有原点和目的地的8。指示API支持23就足够了。但是我得到了这里已经讨论过的很多知识错误:

XMLHTTPREQUEST无法加载https://maps.googleapis.com/maps/api/directions/json?origin=Adelaide,sa& destination = adelaide,sa。请求的资源上没有"访问控制"标头。因此,不允许访问原点" null"。

,但我无法正常工作。我尝试什么都没关系。

  1. 我已经按照Google推荐的CORS尝试了:https://developers.google.com/api-client-library/javascript/features/cors。在此页面上,他们链接到一个教程,您可以在其中配置CORS请求,但我无法正常工作。他们自己的样本在那里甚至不起作用。

  2. 我已经尝试了我在此网站上找到的Ajax和jQuery的不同JSONP请求,但Google并未明确支持JSONP请求。所以我总是会出现错误: JSON?ORIGIAN = ADELAIDE,SA& destinaty = Adelaide,sa& callback = jquery3110281… 1479802069198& emp; emp; em>…:2未被师的syntaxeRror:意外的sunttaxerror:意外的sotken:> > 那是因为它期望JSONP响应,但会得到正常的JSON响应。

  3. 我也尝试了一些库,例如p5.js,但可悲的是它没有起作用。

  4. 在这里我读到,严格的防火墙和请求标头可能会出现问题,所以我在不同的情况和位置尝试了它,但它也没有起作用。

我无法真正粘贴所有不同的代码样本,因为我尝试了很多事情,以至于太长了。(这些都是我在此网站和其他论坛上找到的所有样本)

还要注意的是,我的HTML页面位于JavaScript调用API的文件夹中本地。我已经在这里阅读了一些地方,当您从文件中打开HTML页面时,CORS支持可能会出现问题:

我不是网络开发专家,经过2天的尝试,我不知道该怎么做或其他尝试。所以我的问题是:

  • 即时通讯甚至可以做的事情(从我的本地文件调用API)?
  • 如果不,有其他方法吗?
  • 如果有办法如何解决这个问题?

解决方法是创建一个中间服务器,以将您的请求委托给Google服务器。由于问题中提到的自我原始策略,您无法直接从客户端代码执行它们。

因此,您的应用程序应将请求发送到中间服务器,中间服务器应将Direction API请求发送给Google并将所有响应传递给您的应用程序。

,尽管我想知道您为什么认为限制是8个路点,但文档说是23。

使用标准计划的方向服务

每天2,500个免费请求,计算为客户端和服务器端查询的总和;启用账单可以访问更高的每日配额,以$ 0.50 USD/1000的其他请求计费,每天最多100,000个请求。每个请求最多23个航点,以及原始和目的地。每秒50个请求,计算为客户端和服务器端查询的总和。

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

最新更新