我们正在尝试为我们的一个客户开发一个地理定位应用程序,我们希望首先在自己的域中对其进行测试。
我们已经签署了 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 文档)您要授权的站点 URL:(1)”
我的凭证页面缺少添加推荐人接受的可能性,因此涉及添加推荐人的解决方案现在是不可能的。
我的凭证页面:
https://i.stack.imgur.com/j4pPr.jpg
为什么我们会得到这个错误?我们该如何解决?
Google Maps JavaScript API error: RefererNotAllowedMapError
即使在等待之后。然后我尝试了Maps JavaScript API
,它一直在说RefererNotAllowedMapError
,尝试刷新页面,2分40秒后它终于开始工作了。所以小心点。但是没有任何东西对我有用,只有 Maps JavaScript API
也是如此。你只需要等待很多。
我知道这是一个已经有几个答案的老问题,但我遇到了同样的问题,对我来说,问题是我遵循了 console.developers.google.com 上提供的示例并以 *.domain.tld/*
格式输入了我的域。这根本不起作用,我尝试为此添加各种变体,例如 domain.tld
、domain.tld/*
、*.domain.tld
等。
为我解决的问题是也添加了实际的 protocol; http://domain.tld/*
是它在我的网站上运行所需要的唯一一个。如果我要切换到 HTTPS,我想我需要添加 https://domain.tld/*
。
更新:Google 终于更新了占位符,现在包括 http
:
https://i.stack.imgur.com/uMAPk.png
来吧谷歌,你们比 API 凭证页面更聪明。 (我知道是因为我有两个儿子在那里工作。)
“推荐人”列表比它所显示的要挑剔得多。 (当然,它应该更宽容。)以下是我花了几个小时才发现的一些规则:
列表中的顺序很重要。将您的 URL 在列表中向上移动可能会使其正常工作。
“http://”前缀是必需的。
甚至“localhost”也需要它:“http://localhost/foo/bar.html”
尾随 * 作为通配符似乎可以像字符串比较一样工作。
即使使用“http://localhost/foo/bar.html”,“http://localhost/foo/bar.html?arg=1”也不起作用。 (通配符会有帮助吗?)
对于两个产品开发人员,有(至少)两行:“http://localhost/foo/bar.html”和“http://my.site.com/foo/bar.html”
似乎不需要端口号(8085?4000?)。
可能还有其他规则,但这是一个乏味的猜谜游戏。
http://my.site.com/*
) 或子域 (http://*.site.com
) 中有效。在所有其他情况下,它不起作用
(https://www.my-site.com/*)
是否也解决了该问题。
#
) 在 url 中具有特殊含义。见<a name=...>
。还是您的意思是 iconic://1234/foo
?
子域部分不允许使用通配符(星号)。
错误:*.example.com/*
右:example.com/*
忘记谷歌在占位符上说什么,这是不允许的。
sc.maindomain.com/*
根据文档,“RefererNotAllowedMapError”表示
当前加载 Google Maps JavaScript API 的 URL 尚未添加到允许的引荐来源列表中。请在 Google Developers Console 上检查您的 API 密钥的引用设置。
我为我自己的个人/工作用途设置了 Google Maps Embed API,到目前为止还没有指定任何 HTTP 引荐来源网址。我没有注册任何错误。您的设置必须让 Google 认为您访问的 URL 未注册或未允许。
https://i.stack.imgur.com/9cqCk.png
请注意,如果您只是更改它,设置可能需要长达 5 分钟才能生效。
我尝试了许多引荐来源网址变体并等待了 5 分钟,直到我意识到 Google 在表单字段中填充的示例存在缺陷。他们展示:
*.example.com/*
但是,仅当您的域名前有 subdomain.
或 www.
时才有效。以下内容立即为我工作(省略了谷歌示例中的领先时期):
*example.com/*
hackexample.com
并使用您的 api
根据 google docs,这是因为您在其上使用 Google Maps API 的 url
,它 not registered
在 list of allowed referrers
编辑 :
指定域的所有子域也被授权。如果 http://example.com 被授权,那么 http://www.example.com 也被授权。反之则不然:如果 http://www.example.com 被授权,则 http://example.com 不一定被授权
所以,请配置 http://testdomain.com
域,然后您的 http://www.testdomain.com
将开始工作。
检查您是否也启用了正确的 APIS。
我尝试了以上所有方法,星号、域 tld、正斜杠、反斜杠和所有内容,即使最后只输入一个 URL 作为最后的希望。
所有这些都不起作用,最后我意识到 Google 还要求您现在指定要使用的 API(见屏幕截图)
https://i.stack.imgur.com/33vos.jpg
我没有启用我需要的那些(对我来说是 Maps JavaScript API)
一旦我启用它,一切正常使用:
我希望对某人有所帮助! :)
问题
Google 建议使用格式*.example.com/*
此格式无效。
解决方案
检查浏览器控制台是否存在 Google Maps JavaScript API 错误:RefererNotAllowedMapError
在错误下方应该有:“您要授权的站点 URL:https://example.com/"。
使用该 url 作为引荐来源网址并在其末尾添加通配符 *(在本例中为 https://example.com/*)。
https://yoursite.com/*
, https://*.yoursite.com/*
您必须同时添加这两个。这应该是工作。
我发现即使您的 HTTP Referreres
也足够有效,错误的 API Restrictions
集会导致 Google Maps JavaScript API error: RefererNotAllowedMapError
。
例如:
您正在使用 Javascript API 作为密钥。
将 http://localhost/* 添加到应用程序限制/HTTP 引用
选择 Maps Embed API 而不是 Maps Javascript API
这会导致 RefererNotAllowedMapError
多年来有很多假设的解决方案,有些不再起作用,有些从未起作用,因此我的最新工作是在 2018 年 7 月结束。
设置:
Google Maps JavaScript API 必须能够正常工作……
多个域调用 API:example.com 和 example.net
任意子域:user22656.example.com 等。
安全和标准 HTTP 协议:http://www.example.com/ 和 https://example.net/
不定路径结构(即大量不同的 URL 路径)
解决方案:
实际使用占位符的模式:
不省略协议,而是为每个域添加两个条目(每个协议一个)。
子域的附加条目(以 *. 开头的主机名)。
我感觉使用正确的配置(并且等待了足够的时间)仍然会出现 RefererNotAllowedMapError 错误。我删除了凭证密钥,重复了请求(现在得到了 InvalidKeyMapError),创建了新的凭证(使用完全相同的设置),从那以后它就一直在工作。
仅添加协议和域似乎不包括子域。
对于其中一个域,工作配置如下所示:
https://i.stack.imgur.com/b1ZxO.png
(如文字:)
Accept requests from these HTTP referrers (web sites)
https://*.example.com/*
https://example.com/*
http://*.example.com/*
http://example.com/*
直到我发现 RefererNotAllowedMapError
可能是由于没有与项目关联的结算帐户导致的,这些修复对我都不起作用。因此,请确保激活您的免费试用版或其他任何内容。
这是另一个糟糕的谷歌产品,实施很糟糕。
我发现的问题是,如果您通过 IP 地址限制 API 密钥,它将无法工作......但谷歌远非要明确这一点......直到故障排除和研究我发现:
具有 IP 地址限制的 API 密钥只能用于旨在从服务器端使用的 Web 服务(例如地理编码 API 和其他 Web 服务 API)。大多数这些网络服务在 Maps JavaScript API 中都有等效服务(例如,请参阅地理编码服务)。要使用 Maps JavaScript API 客户端服务,您需要创建一个单独的 API 密钥,该密钥可以通过 HTTP 引用者限制进行保护(请参阅限制 API 密钥)。
https://developers.google.com/maps/documentation/javascript/error-messages
FFS Google...非常重要的信息,可以很好地澄清设置...
https://i.stack.imgur.com/YOWcO.jpg
接受来自这些 HTTP 引荐来源网址(网站)的请求
写localhost目录路径
我遇到了同样的错误:
https://i.stack.imgur.com/TT4sH.png
此链接讨论如何设置 API 密钥限制:https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions
就我而言,问题是我使用了这个限制:
HTTP 引用者(网站)接受来自这些 HTTP 引用者(网站)的请求(可选)使用 * 表示通配符。如果您将此留空,则将接受来自任何推荐人的请求。请务必在生产中使用此密钥之前添加引荐来源网址。 https://*.example.net/*
这意味着诸如 https://www.example.net 或 https://m.example.net 或 https://www.example.net/San-salvador/ 之类的 URL 可以工作。但是,诸如 https://example.net 或 https://example.net 或 https://example.net/San-salvador/ 之类的 URL 将不起作用。我只需要添加第二个推荐人:
https://example.net/*
这解决了我的问题。
我添加了 2 个网站域,在子域中设置“*”不起作用,但特定子域“WWW”和非子域已使用相同的 Google Map API 密钥为我的网站工作。
希望它有所帮助。
您的计费已启用您的网站已添加到 Google 控制台您的网站已添加到您应用中的引荐来源网址。 (为 www 和 none www 做一个通配符)
http://www.example.com/* 和 http://example.com/*
启用了 Javascript 地图并且您使用了正确的凭据 该网站已添加到您的 DNS 以启用上面的 Google 控制台。工作后微笑!
APIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
下找到您的允许引荐来源网址列表
您显示您的 api 凭据页面的屏幕截图,但您必须单击“浏览器密钥 1”并从那里添加引荐来源网址。
对于更深的嵌套页面
例如,如果您在文件夹中有项目或嵌套页面
http://yourdomain.com/your-folder/your-page
您可以在其中输入
http://yourdomain.com/*/*
重要的部分是 /*/*/*
取决于您需要走多远
似乎 *
不会匹配 /
或进入更深的路径..
这将为您提供完整的域访问权限,除非您有比这更深的嵌套..
我也努力做到这一点,但这里有一些建议:
设置为引用的 URL 包括 http,例如 http://example.com/*
Google Maps JavaScript API 已启用
已为此帐号设置了结算信息
解决上述所有问题后,地图将按预期显示。
为 Google 项目启用计费解决了该问题。
通过使用 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
我试图使用 Places API(自动完成)并且还必须在 Google Cloud Console 中启用 Maps Javascript API,然后 Places API 才能工作。
在现场检查您的声明。要加载 Google Maps JavaScript API,请使用这样的脚本标记
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>
我在我的 Wordpress 网站上的 function.php 文件中使用了这个声明
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/*
删除限制(无)对我有用。
在我的经验中
http://www.example.com
工作正常但是,最后需要 https /*
Chrome 的 Javascript 控制台建议我在我的 HTTP 引用列表中声明整个页面地址,在这种情况下 http://mywebsite.com/map.htm 即使确切地址是 http://www.mywebsite.com/map.htm - 我已经按照其他人的建议列出了通配符样式,但这是唯一的方法为我工作。
这对我有用。 api键设置下有2大类限制:
应用限制
API 限制
应用限制:
在“推荐人”部分的底部添加您的网站网址“http://www.grupocamaleon.com/boceto/aerial-simple.html”。根据各种要求,该部分的右侧有示例规则。
https://i.stack.imgur.com/f7UC9.png
API 限制:
在 API 限制下,您必须从下拉列表中明确选择“Maps Javascript API”,因为我们的唯一密钥将仅用于调用 Google 地图 API(可能)并保存它,如下图所示。我希望这对你有用.....对我有用
https://i.stack.imgur.com/3dxoQ.png
检查你的脚本:
此外,由于脚本标签内的键输入不正确,可能会出现问题。它应该是这样的:
<script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
type="text/javascript"></script>
如果您在 localhost 上工作,则不要在 url 中包含 http 或 https。
使用没有协议的“localhost”。我挣扎了几天,发现它起作用了。
http://www.---.com/*
example.com/*
,它从https://example.com/map
开始工作