Google Maps API V3 错误:RefererDeniedMapError

Posted

技术标签:

【中文标题】Google Maps API V3 错误:RefererDeniedMapError【英文标题】:Google Maps API V3 error: RefererDeniedMapError 【发布时间】:2016-09-16 00:22:41 【问题描述】:

我遇到了 Google Maps javascript API V3 的问题。控制台日志显示:

Google Maps API 错误:RefererDeniedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-denied-map-error

关于此错误的 Google 文档非常糟糕,即使他说要检查开发者控制台以搜索更多详细信息,我也无法找到有关该错误的更多详细信息,它可能与发布在以下列表。我看到在 Google 控制台中,您可以以某种方式启用日志记录或其他功能,但它需要 Google SDK,而我无法负担配置,因为这意味着超出预算

这里已经提出了这个问题:Javascript error in Google Maps API v3 (RefererDeniedMapError) 但没有一个答案可以帮助我。

这是我迄今为止尝试过的:

    重新生成 Google Api 在 Google 控制台中启用/禁用域限制 将密钥从浏览器更改为服务器 试图了解该域是否因某种原因被 Google 禁止 在 Google 控制台上创建新项目并生成一个全新的 Javascript API 密钥,没有(从一开始)域限制

让我再提供一些背景数据:

    我在一个已经存在的网站上为外部客户工作,他对可能已经配置了 api 密钥的预先存在的 google 帐户一无所知(他们正在使用一些 Google API 服务,但我只知道这些) 我设法发现谷歌已就 API 使用配额与他们联系过,但我还是不知道通信详细信息在哪里。 他们有一个 IIS 服务器,并且正在他们主域的子目录中构建新站点 我注意到不知何故,从新网站到自己网站的自请求 (ajax) 会导致跨域请求,这在我看来真的很奇怪,太糟糕了,我不知道他们的服务器配置是什么更详细。 我查看了 Google Api 的免费计划,限制是每天 25K,客户说他不应该达到那么高,但他愿意支付重新启用 API 的费用 我已经在本地环境和其他测试实时域上测试了新生成的 API,它看起来可以正常工作,但是一旦我在有罪域上尝试这些密钥,就会弹出错误

我的问题是:

    是否有一种安全的方法可以了解该域是否因 API 的超额使用或其他原因而被 Google 以某种方式禁止? 如何确定为域创建计费帐户并允许 API 计划高于 25k 将再次启用我的计划? 这是一个与 javascript 相关的问题吗?我想我已尽我所能检查这部分,但我愿意接受建议。 是否有多个 Google 帐户引用同一个域以使用 API?我的意思是,据我所知,在该域中可能有多个具有不同 API 密钥的 Google 帐户为同一目标创建(域限制与否,它们可能仍在使用中)

【问题讨论】:

直接向 Google 询问您的这个非常具体的问题怎么样? @MrUpsidown 是的,如果只有直接渠道可以与他们联系,我愿意这样做。他们没有更多的呼叫中心(不包括他们的付费支持服务,我想保留它作为最后的机会)。即使在他们的内部文档中,他们的建议之一是在 *** 中询问 附带信息:付费支持甚至不是按通话付费,而是以按月付费的形式进行。每月支付 150 美元只是为了解决一个问题似乎很荒谬...... 【参考方案1】:

对于将来会遇到这个问题的每个人:原来这是一个领域问题。我设法使用他们的论坛联系了谷歌支持服务中的一位:https://code.google.com/p/gmaps-api-issues/

在那里发布我的问题后,我被告知我正在处理的域过去曾获得 Google 许可,它曾经激活过商业计划,然后过去的某个人违反了 Google 的 ToS。遗憾的是,普通用户无法检查您的域过去是否违反了 Google 的 ToS,因此我不得不等待 Google 支持团队的答复。

长话短说:如果您过去有一个被 Google 禁止的域,那么您就有麻烦了,并且有 2 条出路: - 更改您的域以获取未被禁止的新域 - 如果您想再次使用 API,请支付 10,000 美元购买 Google 工作许可证(不是高级许可证,只是“基本”许可证)。价格不是幻想,这是 google Support 告诉我的。

希望这将帮助某人找出这个记录不充分的错误。

更新

文档已更新并添加了清晰的解释:

RefererDeniedMapError 在收到几封电子邮件通知后,您的应用程序因不遵守 Google Maps API 服务条款而被阻止。要对阻止提出上诉并审查您的实施,请填写this form。您将在几个工作日内通过电子邮件收到回复。

https://developers.google.com/maps/documentation/javascript/error-messages

所以,从现在开始,所有遇到此问题的人都可以提交申诉表。

【讨论】:

【参考方案2】:

你可以试试这个issue中的建议。

"您可以尝试禁用 IP 到域名的重定向(如 现在),并在上面的示例中使用您的 IP。这不是一个纯粹的解决方案, 但至少你的网站上可以有地图。”

你也可以查看here的答案,如果对你有帮助的话。

那么如果上述任何一个解决方案都对您没有帮助,那么我认为您应该考虑 MrUpsidown 的建议。

【讨论】:

感谢您的建议,这是我过去访问过的链接之一。事实是我对谷歌地图本身没有问题,但我在问题中提到的 Javascript API 没有问题。所以我没有任何围绕地图的 iframe,而只是一个需要发布到我正在处理的域的表单。将帖子本身插入到托管在另一个域上的 iframe 中,只是为了使 javascript API 的工作听起来对我的情况来说有点太骇人听闻了。除此之外,我无法访问客户端 DNS 设置。我有点没有想法,请参阅我对@MrUpsidown 的回答

以上是关于Google Maps API V3 错误:RefererDeniedMapError的主要内容,如果未能解决你的问题,请参考以下文章

`Google Maps API 警告:NoApiKeys` 尝试访问 Youtube Data Api v3 时

Google Maps API V3 中的 API 密钥是啥?

google maps js v3 api教程 -- 在地图上添加标记

Google Maps v3 - 防止 API 加载 Roboto 字体

google maps js v3 api教程 -- 创建一个地图

JavaScript Google Maps API V3 Javascript基本示例