Google Maps JavaScript API RefererNotAllowedMapError


122

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

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

但是,即使是最简单的示例,我们也无法毫无错误地运行。

在我们的领域并使用我们的密钥,我们有以下演示:

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

但这不起作用,Firebug控制台说:

“ Google Maps API错误:Google Maps API错误:RefererNotAllowedMapError(链接到RefererNotAllowedMapError的Google文档)要授权的网站网址:(1)”

我的凭证页面缺少添加推荐人接受的可能性,因此涉及添加推荐人的解决方案目前无法实现。

我的凭证页面:

在此处输入图片说明

为什么会出现该错误?我们该如何解决?


不允许重复使用Google Maps API引荐来源网址您的代码对我有用(使用我的密钥),因此您的密钥,允许的引荐来源或可以与之配合使用的服务有问题。
geocodezip

但是我在我的凭据页面上没有这种可能性,如您在此处的答案中所见。有什么提示吗?
GrupoCamaleónCreativos,

好吧,我是新手,还不知道如何正确使用该网站。不便之处,敬请原谅。我已经编辑了问题,并在凭证页面上添加了信息。引用的一些解决方案涉及添加引荐来源网址,这是我目前无法做到的。
GrupoCamaleónCreativos

如果您无法更改密钥的引荐来源,请将其删除或将其替换为您控制的密钥。密钥不是必需的,但是包含一个密钥是有好处的。
geocodezip

1
我创建了没有APP或API限制的新密钥,它说了expiredKey 10分钟,然后开始工作。接下来,我尝试仅添加Places API,但正在从Web调用它,并说:Google Maps JavaScript API error: RefererNotAllowedMapError即使在等待之后。然后,我尝试了一下Maps JavaScript API,然后一直说RefererNotAllowedMapError,尝试刷新页面,它终于在2分40秒后开始工作。所以要小心了。但是,没有任何事情对我有用,也Maps JavaScript API只有这样。您只需要等待很多。
psycho brm '18

Answers:


167

我知道这是一个已经有多个答案的老问题,但是我遇到了同样的问题,对我来说,问题是我遵循console.developers.google.com上提供的示例,并以格式输入了我的域*.domain.tld/*。这并没有在所有的工作,我尝试添加各种变化,这个像domain.tlddomain.tld/**.domain.tld等等。

对我来说解决的还在于添加了实际的协议http://domain.tld/*是我需要它才能在我的网站上运行的唯一工具。我想https://domain.tld/*如果要切换到HTTPS,则需要添加。

更新:Google终于将占位符更新为http现在包含的位置:

Google Maps API引荐来源网址输入字段


1
我确认:唯一允许我使用API​​的组合是http://www.---.com/*
Marco Panichi,

6
这个答案是使我的代码正常工作的唯一答案。我可以确认Google提供的示例不起作用。
Jargs '16

为什么这个问题没有任何答案被标记为“最佳答案”?特别是powerbuoy的。
Mohammad Saberi

1
感谢@Google为我们提供虚假信息。http://----.com/*是正确的格式。
迈克尔·雅格,2016年

2
如果您有多个子域,可以使用http://*.example.com和https://*.example.com覆盖所有基础
tim.baker

21

来Google上,你们比“ API凭据”页面更聪明。(我知道,因为我有两个儿子在那里工作。)

“推荐人”列表的挑剔远远超过了它的允许范围。(当然,它应该更宽容。)以下一些规则使我花了数小时才发现:

可能还有其他规则,但这是一个乏味的猜测游戏。


1
关于编辑之前的答案,我也没有耐心。看起来通配符(*)仅在地址(http://my.site.com/*)或子域(http://*.site.com)中起作用。在所有其他情况下,它都不起作用
CristianTraìna18年

1
我错误地设置了限制,仅允许Places API(引荐来源网址限制旁边的标签)。这将导致相同的RefererNotAllowedMapError错误。
马特·格里尔

添加www。我的域名为我修复了它。我不确定是否将通配符(*)添加到域的末尾,例如也(https://www.my-site.com/*)已解决了该问题。
穆格

我的离子手机应用程序的域为ionic:// app#/ tabs。我如何将其包括在限制中。我尝试了许多组合,但徒劳无功。例如:ionic:// app#/ tabs,httpionic:// app#/ tabs,httpsionic:// app#/ tabs,ionic:// *,ionic:// app#/ *,httpionic:// *, ......
AUK4SO

@ AUK4SO-网址中的井号(#)具有特殊含义。请参阅<a name=...>。还是你的意思iconic://1234/foo
瑞克·詹姆斯

18

根据文档,“ RefererNotAllowedMapError”表示

当前加载Google Maps JavaScript API的网址尚未添加到允许的引荐来源网址列表中。请在Google Developers Console上检查API密钥的引荐来源网址设置。

我已经为自己的个人/工作使用设置了Google Maps Embed API,到目前为止,尚未指定任何HTTP引荐来源网址。我没有注册任何错误。您的设置必须使Google认为您正在访问的URL未注册或不允许。

在此处输入图片说明


15

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


15

我尝试了许多引荐来源网址变体,并等待了5分钟,直到我意识到Google在表单字段中填充的示例存在缺陷。他们展示:

*.example.com/*

但是,仅当您拥有域名subdomain.www.域名位于域名前面时,该方法才有效。以下内容立即为我工作(从Google的示例中省略了前置时间):

*example.com/*

8
坏主意-有人可以创建hackexample.com和使用您的api
HyderA,2017年

3
@HyderA-更有可能的是,有人会注册一堆免费的Google帐户来获取额外的地图负载。
ow3n

@HyderA他们仍然需要密钥,因此机会不多。但是你是对的,仍然是潜在的风险。
伊恩(Eoin)'18年

我的离子手机应用程序的域为ionic:// app#/ tabs。我如何将其包括在限制中。我尝试了许多组合,但徒劳无功。例如:ionic:// app#/ tabs,httpionic:// app#/ tabs,httpsionic:// app#/ tabs,ionic:// *,ionic:// app#/ *,httpionic:// *, ......
AUK4SO

10

根据谷歌文档 发生这种情况,因为url在其上使用谷歌地图API,它not registeredlist of allowed referrers

编辑:

Google文档

指定域的所有子域也得到授权。

如果http://example.com被授权,则http://www.example.com也被授权。反之则不成立:如果http://www.example.com被授权,则http://example.com不一定被授权

因此,请配置http://testdomain.com域,然后您http://www.testdomain.com将开始工作。


在我的情况下,该域的DNS配置错误。例如:www.testdomain.com正常工作testdomain.com不能正常工作,导致出现错误
Tahir Khalid

1
看来逻辑是相反的?除非我缺少任何东西。
twobob

10

检查您是否也启用了正确的APIS。

我尝试了所有上述方法,包括星号,域顶级域名(TLD),正斜杠,反斜杠以及其他所有内容,甚至最后只输入了一个URL作为最后的希望。

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

在此处输入图片说明

我没有启用所需的功能(对我来说就是Maps JavaScript API)

启用它后,使用以下命令一切正常:

http://www.example.com/ *

希望对您有所帮助!:)


8

我发现,即使您HTTP ReferreresAPI Restrictions理由也足够有效,而且是错误的Google Maps JavaScript API error: RefererNotAllowedMapError

例如:

  • 您正在使用Javascript API作为密钥。
  • 添加http://localhost/*Application Restrictions / HTTP Referrences
  • 选择Maps Embed API代替Maps Javascript API
  • 这导致 RefererNotAllowedMapError

是的,在我看来,分类错误是个问题
Andriy F.

但是安全性呢?如果允许本地主机,谁可以在本地主机中使用我的密钥?
Kaushal


5

几年来有许多假设的解决方案,有些不再有效,有些则从未使用过,因此我的最新数据是在2018年7月底开始的。

建立:

Google Maps JavaScript API必须与…兼容。

  • 多个域调用API:example.comexample.net
  • 任意子域:user22656.example.com,等等。
  • 安全和标准HTTP协议:http://www.example.com/https://example.net/
  • 不确定的路径结构(即大量不同的URL路径)

解:

  • 实际使用占位符中的模式:<https (or) http>://*.example.com/*
  • 不省略协议,而是在每个域中添加两个条目(每个协议一个)。
  • 子域的附加条目(*.主机名前导)。
  • 我觉得RefererNotAllowedMapError使用正确的配置(并等待了足够的时间)后,错误仍然出现。我删除了凭证密钥,重复了请求(现在InvalidKeyMapError),创建了新的凭证(使用完全相同的设置),并且此后一直有效。
  • 仅添加协议和域似乎没有包含子域。
  • 对于其中一个域,工作配置如下所示:

Google API配置的屏幕截图

(作为文字:)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*

就我而言,该解决方案有所帮助,但对错误的API进行了API限制。由于某种原因,返回了相同的错误消息。将API限制从“ Places API”更改为“ Maps Javascript API”解决了该问题。
LMG

4

在此处输入图片说明

接受来自这些HTTP引荐来源网址(网站)的请求

写本地主机目录路径


3
根据谷歌的文本它应该是一个可选属性,如果它的空白它应该工作
ejectamenta

@ayanchakraborty-我尝试了localhost / index.html(和各种路径)的10种不同组合以及file:///android_assets/www/index.html的各种组合-但没有任何效果。控制台中的RefererNotAllowedMapError向我显示:您要授权的网站网址:__file_url __ // android_asset / www / index.html#/ tab / map ////--但这种方法也不起作用。
rolinger

4

我遇到了同样的错误:

在此处输入图片说明

此链接讨论了如何设置API密钥限制:https : //cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

就我而言,问题是我正在使用此限制:

HTTP引荐来源网址(网站)接受来自这些HTTP引荐来源网址(网站)的请求(可选),对通配符使用*。如果您将此留空,则任何引荐来源的请求都会被接受。在生产中使用此密钥之前,请确保添加引荐来源网址。 https://*.example.net/*

这意味着可以使用诸如https://www.example.nethttps://m.example.nethttps://www.example.net/San-salvador/之类的 URL 。但是,诸如https://example.nethttps://example.nethttps://example.net/San-salvador/之类的 URL 无法使用。我只需要添加第二个引荐来源网址:

https://example.net/*

那为我解决了问题。


4

我添加了2个网站域,在子域中设置“ *”不起作用,但是使用相同的Google Map API密钥为我的网站使用了特定子域“ WWW”和非子域。

不要在子域中使用“ *”

希望对您有所帮助。


3

您将显示api凭据页面的屏幕截图,但是您必须单击“浏览器密钥1”,然后从此处添加引荐来源网址。


3

对于更深层的嵌套页面

如果文件夹或项目中的项目在嵌套页面中

http://yourdomain.com/your-folder/your-page 您可以输入

http://yourdomain.com/*/*

重要的部分/*/*/*取决于您需要走多远

似乎*将不会匹配/或进入更深层次的路径。

除非您具有更深的嵌套,否则这将给您完整的域访问权限。


3

这些修补程序对我没有任何作用,直到我发现这RefererNotAllowedMapError可能是由于没有与该项目关联的计费帐户所致。因此,请确保激活您的免费试用版或其他功能。


3
  1. 您的帐单已启用

  2. 您的网站已添加到Google控制台

  3. 您的网站已添加到应用程序中的引荐来源网址。

  4. (对www和不对www都使用通配符)

http://www.example.com/ *和http://example.com/ *

  1. 该Javascript Maps已启用,并且您使用的是正确的凭据

  2. 该网站已添加到您的DNS中,以启用上面的Google控制台。

  3. 在工作后微笑!


你允许的引荐列表,可以在谷歌下云平台的Web控制台(console.cloud.google.com)中找到APIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
鸭子硕士

3

这是另一种糟糕的Google产品,具有可怕的实现。

我发现的问题是,如果您通过IP地址限制API密钥,它将无法正常工作...但是,要弄清楚这一点,离Google太远了……直到进行故障排除和研究后,我发现:

具有IP地址限制的API密钥只能与打算从服务器端使用的Web服务一起使用(例如Geocoding API和其他Web Service API)。这些大多数Web服务在Maps JavaScript API中都具有等效的服务(例如,请参阅地址解析服务)。要使用Maps JavaScript API客户端服务,您需要创建一个单独的API密钥,该密钥可以通过HTTP引荐来源网址限制进行保护(请参阅限制API密钥)。

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

FFS Google ...相当重要的一条信息,将有助于您对设置进行澄清...



2

通过使用Google的以下提示,我终于开始工作了:(https://support.google.com/webmasters/answer/35179

这是我们对域和站点的定义。这些定义特定于Search Console验证:

http://example.com/ - A site (because it includes the http:// prefix)
example.com/ - A domain (because it doesn't include a protocol prefix)
puppies.example.com/ - A subdomain of example.com
http://example.com/petstore/ - A subdirectory of http://example.com site

2

我也努力使这项工作顺利进行,但是这里有一些提示:

  • 设置为引荐来源网址的网址包括http,例如http://example.com/*
  • Google Maps JavaScript API已启用
  • 已为此帐户设置帐单

解决以上所有问题后,地图将按预期显示。


1

我试图使用Places API(自动完成功能),并且还必须在Google Cloud Console中启用Maps Javascript API,然后Places API才能运行。


0

现场检查您的打胎情况。要加载Google Maps JavaScript API,请使用如下脚本标签

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>

我在function.php文件中的Wordpress网站上使用了此声明

wp_enqueue_script("google-maps-v3", "//maps.google.com/maps/api/js?key=YOUR_API_KEY", false, array(), false, true);

我已经为此格式设置了API密钥,并且效果很好

http://my-domain-name(without www).com/*

此声明不起作用

*.my-domain-name.com/*

0

取消限制(无限制)对我有用。


6
删除限制被认为是不好的做法,这会使您的API容易受到攻击。
mtness,

2
@mtness是,显然,但是发布者已经首先尝试了它,但是没有成功。不幸的是Google的文档不再有用。这里的每个答案都带来了新的技巧,这几乎就像一个猜谜游戏……
James Wong-恢复莫妮卡



0

这对我有用。api键设置下有2种主要的限制类别:

  • Application restrictions
  • API restrictions

应用限制:

在“引荐来源网址”部分的底部,添加您的网站网址“ http://www.grupocamaleon.com/boceto/aerial-simple.html ”。根据各种要求,该部分的右侧有示例规则。

应用限制

API限制:

在API限制下,您必须从下拉列表中明确选择“ Maps Javascript API”,因为我们的唯一密钥仅用于调用Google Maps API(可能)并保存它,如下面的快照所示。我希望这对你有用.....为我工作

在此处输入图片说明

检查您的脚本:

此外,由于script标签内的密钥输入不正确,可能会出现此问题。应该是这样的:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.