经过几个月的 100% 稳定,今天我在谷歌地图服务上收到 403 错误



我只是想知道是否有人可以阐明为什么我的谷歌地图服务看到 403 禁止错误。

我一直在加载地图 api:

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

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

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

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

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

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

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

即使设置了 API 密钥,这个问题也会重新出现 - 我认为问题实际上在于缓存谷歌地图 javascript。

我让我的Web服务器动态决定在本地组合,缩小和缓存哪个javascript。这是使用 RequestReduce 完成的。

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

API 密钥只是一个红鲱鱼。我可以删除密钥,我的代码仍然有效 - 只要 maps js 是"新鲜的"。

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

javascriptUrlsToIgnore="maps.googleapis.com"

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

Google Maps JavaScript API 最近将次要版本增量提升至 3.9更新日志,默认版本从 3.6 提前到 3.7。我注意到您没有在用于加载Google Maps JavaScript API库的URL中指定版本,因此您检索了默认版本3.7。关于 3.7 版的一个重要一点是,它现在要求对某些库使用密钥。有关应使用哪个版本的信息,请参阅开发人员指南的版本控制部分。

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

最新更新