4

我只是想知道是否有人可以解释为什么我的谷歌地图服务会出现 403 Forbidden 错误。

我一直在加载地图 api:

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?libraries=places&amp;sensor=false"></script>

然后使用地理编码和自动完成库将用户搜索转换为坐标,以显示在我的搜索结果的地图上。

直到昨天,当我在访问自动完成服务时开始看到 403 错误时,这一直运行良好(几个月)。

我 100% 确信我没有达到每天 25k 的查询限制,并且我没有对我的代码进行任何更改。

我现在已经在我的脚本加载中添加了一个 API 密钥,并且问题消失了,但我想确保这不会再次发生。基于位置的搜索是我们网站的主要功能,如果它出现故障,我们就会失去客户。

有没有人知道为什么会发生这种情况?

在什么情况下会再次发生?

4

2 回答 2

14

即使使用 API 密钥集,这个问题也会重新出现- 我认为问题实际上在于缓存 google maps javascript。

我让我的网络服务器动态决定要在本地组合、缩小和缓存哪些 javascript。这是使用RequestReduce完成的。

当客户端 javascript 变得陈旧(在我的情况下大约 3 天)时 - 谷歌返回 403 未经授权。

API 密钥只是一条红鲱鱼。我可以删除密钥并且我的代码仍然有效 - 只要地图 js 是“新鲜的”。

就我而言,解决方法是添加maps.googleapis.comRequestReduce忽略列表中:

javascriptUrlsToIgnore="maps.googleapis.com"

对于其他人,请确保不要将 maps.googleapis.com javascript 缓存超过几个小时(如果有的话)。

于 2012-05-28T15:39:00.367 回答
3

Google Maps JavaScript API 最近将小版本增量升级到 3.9变更日志,默认版本从 3.6 升级到 3.7。我注意到您没有在用于加载 Google Maps JavaScript API 库的 URL 中指定版本,因此您检索了默认版本 3.7。关于 3.7 版的一件重要事情是,它现在需要为某些库使用密钥。开发人员指南的版本控制部分提供了有关您应该使用哪个版本的信息。

其他一些也遇到了类似的问题,但是如果您在添加密钥后运行良好,那么您应该很好。如果您希望在未来收到有关 Google Maps API 更改的通知,您可以注册通知

于 2012-05-23T13:49:24.957 回答