谷歌地图JavaScript API RefererNotAllowedMapError

160

我们正在为客户开发一个地理定位应用程序,我们希望先在自己的域中进行测试。

我们已经注册了Google Maps JavaScript API,并且拥有有效的浏览器密钥,我们的域名www.grupocamaleon.com已被授权使用该密钥。

但是,我们甚至无法使最简单的示例运行而不出错。

在我们的域和密钥中,我们有以下演示:

(1) http://www.grupocamaleon.com/boceto/aerial-simple.html

但它没有工作,Firebug控制台显示:

"Google Maps API错误:Google Maps API错误:RefererNotAllowedMapError(链接到Google关于RefererNotAllowedMapError的文档)要授权的站点URL:(1)"

我的凭据页面缺少添加可接受引用程序的选项,因此目前无法使用涉及添加引用程序的解决方案。

我的凭据页面:

enter image description here

为什么会出现这个错误?我们该如何修复它?

可能是Google地图API引用程序不允许的重复问题。您的代码对我有效(使用我的密钥),因此您的密钥、允许的引用程序或启用与其一起使用的服务存在问题。 - geocodezip
但是在我的凭据页面中没有这样的可能性,正如您在我的答案中所看到的。有什么提示吗? - Grupo Camaleón Creativos
嗯,我是个新手,还不知道如何正确使用这个网站。对于造成的不便,我感到抱歉。我已经编辑了我的问题,在我的凭证页面上添加了信息。一些提到的解决方案涉及添加引用者,但我目前无法做到。 - Grupo Camaleón Creativos
如果您无法更改密钥的引用者,请将其删除或替换为您可控制的引用者。密钥不是必需的,但包含一个密钥会带来一些好处。 - geocodezip
1
我创建了一个没有应用程序或API限制的新密钥,它在10分钟内显示为expiredKey,然后开始工作。接下来,我尝试添加仅Places API,但它是从Web调用的,并显示:Google Maps JavaScript API error: RefererNotAllowedMapError,即使等待后仍然如此。然后我尝试使用Maps JavaScript API,它一直显示RefererNotAllowedMapError,尝试刷新页面,经过2分40秒后终于开始工作。所以要小心。但是,对我来说,没有任何东西可以工作,只有Maps JavaScript API可以。你只需要等待很长时间。 - psycho brm
显示剩余3条评论
32个回答

213

我知道这是一个旧问题,已经有几个答案了,但我遇到了同样的问题,对我来说问题在于我按照console.developers.google.com上提供的示例格式输入了我的域名:*.domain.tld/*。 这根本不起作用,我尝试添加了各种变化,例如domain.tlddomain.tld/**.domain.tld等。

对我有用的解决方法是同时添加实际的协议; 只需要http://domain.tld/*就可以在我的网站上工作。 我想如果我要切换到HTTPS,就需要添加https://domain.tld/*

更新:现在Google终于更新了占位符,包括http

Google Maps API referrer input field


1
我确认:我唯一可以使用 API 的组合是 http://www.---.com/* - Marco Panichi
11
这个答案是唯一一个让我的代码起作用的。我可以确认,谷歌提供的示例无法使用。 - Jargs
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Michael Yaeger
3
如果你有多个子域名,你可以使用http://.example.com和https://.example.com来覆盖所有情况。 - tim.baker
1
也许谷歌更新了该功能-对我而言,它可以在没有协议的情况下工作。我在设置字段中有 example.com/*,并且它可以从 https://example.com/map 中工作。 - Andy
显示剩余9条评论

31

谷歌啊,你们比API凭据页面上显示的更聪明。(我知道这一点是因为我有两个儿子在那里工作。)

"引荐者"列表比它表现出来的要挑剔得多。(当然,它应该更容易适应。)以下是我花了数小时才发现的一些规则:

可能还有其他规则,但这是个繁琐的猜测游戏。


1
关于编辑之前的答案,我也快没耐心了。看起来通配符(*)只能在地址的末尾(http://my.site.com/*)或子域名(http://*.site.com)中使用。在所有其他情况下,它都不起作用。 - Christian Vincenzo Traina
1
我错误地设置了限制,只允许使用Places API(紧邻引用者限制的选项卡)。这导致了相同的RefererNotAllowedMapError错误。 - Matt Greer
为我的域名添加 www. 前缀解决了问题。我不确定在域名结尾处添加通配符 (*),例如(https://www.my-site.com/*)是否也可以解决该问题。 - Mugé
我的Ionic移动应用程序的域名为ionic://app#/tabs。我该如何将其包含在限制中?我尝试了许多组合,但都无济于事。例如:ionic://app#/tabs、httpionic://app#/tabs、httpsionic://app#/tabs、ionic://*、ionic://app#/*、httpionic://*等。 - AUK4SO
@AUK4SO - 井号 (#) 在 URL 中有特殊含义。请参见 <a name=...>。或者你是指 iconic://1234/foo - Rick James
显示剩余5条评论

27

通配符(星号)不允许在子域名部分使用。

  • 错误:*.example.com/*
  • 正确:example.com/*

忘记Google关于占位符的说法,这是不允许的。


我该如何添加以下内容: https://sc.maindomain.com/Survey/UpdateInspection/102 - Sracanis
3
您可以将其设置为 sc.maindomain.com/* - Daniel Loureiro
*.example.com/* 也可以工作。 - Jayden Lawson

20
根据文档,“RefererNotAllowedMapError”的意思是当前加载Google Maps JavaScript API的URL未被添加到允许引用程序列表中。请检查Google Developers控制台上API密钥的引用设置。我已经为自己的个人/工作使用设置了Google Maps Embed API,到目前为止还没有指定任何HTTP引用者。我没有注册任何错误。您的设置可能会使Google认为您正在访问的URL未经注册或未被允许。

enter image description here


20

请注意,如果您只是更改设置,可能需要最多5分钟才能生效。


16
我尝试了许多推荐来源的变化,并且也等待了5分钟,直到我意识到表单字段中的示例由Google提供的是有缺陷的。他们显示:

我尝试了许多推荐来源的变化,并且等待了5分钟,直到我意识到表单字段中由Google提供的示例有误。他们显示:

*.example.com/*

但是这仅适用于您的域名前面有子域名www.的情况。以下内容立即为我奏效(从Google的示例中省略了前导句点):

*example.com/*

12
不好的想法 - 有人可能会创建hackexample.com并使用您的api。 - HyderA
3
一个更有可能的情况是,有人会注册一堆免费的Google账号来获取额外的地图加载。 - ow3n
@HyderA,他们仍然需要密钥,因此机会不是很大。但是你说得对,仍然存在潜在风险。 - Eoin
我的Ionic移动应用程序的域名为ionic://app#/tabs。我该如何将其包含在限制中?我尝试了许多组合,但都没有成功。例如:ionic://app#/tabs、httpionic://app#/tabs、httpsionic://app#/tabs、ionic://*、ionic://app#/*、httpionic://*等。 - AUK4SO

14

在我的情况下,这是域名的DNS配置错误。例如:www.testdomain.com 可以正常工作testdomain.com 无法工作,导致出现错误。 - Trevor
2
这似乎是逻辑相反了?除非我漏掉了什么。 - twobob

11

请检查您已启用正确的API。

我尝试了上述所有方法,星号、域TLD、正斜杠、反斜杠等等,最后只剩下最后一点希望:只输入一个URL。

所有这些都没有起作用,最后我意识到Google还要求您现在指定要使用的API(参见截图)。

输入图像说明

我没有启用我需要的API(对我来说是Maps JavaScript API)。

一旦我启用了它,就可以使用以下方式顺利运行:

http://www.example.com/*

希望这能帮助某人! :)


9

问题
谷歌建议使用的格式为*.example.com/*,但该格式不起作用。

解决方案
检查浏览器控制台中的Google Maps JavaScript API错误:RefererNotAllowedMapError。
在错误下方应有以下内容:“您站点的URL需要获准: https://example.com/"”。
使用该URL作为引用并在其末尾加上通配符*(在此例子中为https://example.com/*)。


3
嗨,我尝试了Stack Overflow上找到的所有方法和变化,但都没有成功。2021年有什么改变吗? - Milk Man
2022年这个答案是有效的。https://yoursite.com/*https://*.yoursite.com/*。你必须添加这两个。这应该可以工作。 - kodmanyagha
*example.com/* 也可以工作。 - Jayden Lawson

8

在我找到答案之前,这些解决方法都没有起作用。我发现 RefererNotAllowedMapError 可能是因为项目没有关联计费账户所导致的。所以请确保激活您的免费试用或其他方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接