Google Maps JavaScript API RefererNotAllowedMapError

问题描述 投票:101回答:24

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

我们已经签署了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)”

我的凭据页面缺少添加引用来接受的可能性,因此现在无法实现涉及添加引用的解决方案。

我的凭证页面:

enter image description here

为什么我们会收到这个错误?我们该如何解决?

javascript google-maps google-maps-api-3
24个回答
152
投票

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

为我解决的是添加实际的协议; http://domain.tld/*是我在我的网站上工作所需的唯一一个。我想如果我要切换到HTTPS,我需要添加https://domain.tld/*

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

Google Maps API referrer input field


4
投票

enter image description here

接受来自这些HTTP引用者(网站)的请求

写localhost目录路径


3
投票

您显示了api凭据页面的屏幕截图,但您必须单击“浏览器键1”并从那里添加引用。


3
投票

对于更深层的嵌套页面

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

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

http://yourdomain.com/*/*

重要的是/*/*/*取决于你需要走多远

似乎*将不匹配/或进入更深的路径..

除非你有更深的嵌套,否则这将为你提供完整的域访问权限。


3
投票

我遇到了同样的错误:

enter image description here

此链接讨论如何设置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/*

这解决了我的问题。


3
投票
  1. 您的结算已启用
  2. 您的网站已添加到Google控制台
  3. 您的网站已添加到您应用中的引荐来源。
  4. (为www和非www做一个通配符)

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

  1. 已启用Javascript地图并且您使用的是正确的凭据
  2. 该网站已添加到您的DNS中,以启用您的Google控制台。
  3. 它工作后微笑!

2
投票

我最终使用谷歌的这个提示让我的工作:(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
投票

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

dont' use "*" in subdomain

希望它有所帮助。


2
投票

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

  • 错误:* .example.com / *
  • 右:example.com/*

忘记Google在占位符上所说的内容,这是不允许的。


2
投票

这是另一款非常糟糕的Google产品,实施起来非常糟糕。

我发现的问题是,如果你通过IP地址限制API密钥,它就不会工作......但是远远不是谷歌要明确这一点......直到故障排除和研究我发现:

具有IP地址限制的API密钥只能用于从服务器端使用的Web服务(例如Geocoding API和其他Web服务API)。这些Web服务中的大多数都具有Maps JavaScript API中的等效服务(例如,请参阅地理编码服务)。要使用Maps JavaScript API客户端服务,您需要创建一个可以使用HTTP引用限制进行保护的单独API密钥(请参阅限制API密钥)。

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

FFS Google ...非常重要的信息,可以很好地澄清设置...


1
投票

经过几天和几天的努力,http://www.example.com/ *为我工作。


20
投票

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

“推荐人”列表比它允许的更加挑剔。 (当然,它应该更宽容。)以下是一些花了我几个小时才发现的规则:

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


1
投票

直到我发现RefererNotAllowedMapError可能是由于没有与项目相关联的结算帐户造成的,这些修复程序都没有对我有用。因此,请务必激活免费试用版或其他任何内容。


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
投票

删除限制(无)对我有用。


0
投票

在我的经验中

http://www.example.com

工作正常但是,https最终需要/ *


0
投票

Chrome的Javascript控制台建议我在我的HTTP引用列表中声明整个页面地址,在这个例子中http://mywebsite.com/map.htm即使确切地址是http://www.mywebsite.com/map.htm - 我已经按照其他人的建议列出了通配符样式,但这是它对我有用的唯一方式。


17
投票

根据文档,“RefererNotAllowedMapError”表示

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

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

enter image description here


15
投票

我尝试了很多引用变种并等待了5分钟,直到我意识到Google在表单字段中填充的示例存在缺陷。他们展示:

*.example.com/*

但是,只有在您的域名前面有subdomain.www.时才有效。以下内容立即为我工作(省略了Google示例中的领先时期):

*example.com/*

11
投票

只需提醒一下,如果您只是更改它,设置可能需要5分钟才能生效。


9
投票

根据google docs这发生的原因是因为您正在使用Google Maps API的url,它在not registered中的list of allowed referrers

编辑:

来自Google Docs

指定域的所有子域也都是经过授权的。

如果http://example.com被授权,那么http://www.example.com也被授权。反之亦然:如果http://www.example.com获得授权,http://example.com未必获得授权

所以,请配置http://testdomain.com域,然后你的http://www.testdomain.com将开始工作。


9
投票

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

我尝试了以上所有,星号,域名tld,正斜杠,反斜杠和所有内容,甚至最后只输入一个url作为最后的希望。

所有这些都不起作用,最后我意识到谷歌还要求你现在指定你想要使用哪个API(见截图)

enter image description here

我没有启用我需要的功能(对我而言是Maps JavaScript API)

一旦我启用它,所有工作正常使用:

http://www.example.com/ *

我希望能帮助别人! :)


7
投票

我发现即使你的HTTP Referreres足够有效,错误的API Restrictions导致Google Maps JavaScript API error: RefererNotAllowedMapError

例如:

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

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),创建了新的凭据(使用完全相同的设置),从那时起它就一直工作。
  • 添加纯粹的协议和域似乎没有包含子域。
  • 对于其中一个域,工作配置如下所示:

Screenshot from Google API configuration

(作为文字:)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*
© www.soinside.com 2019 - 2024. All rights reserved.