谷歌地图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个回答

3

您展示了 API 凭据页面的截图,但您需要单击 "浏览器密钥 1" 并从那里添加引荐者。


2

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

1
我正在尝试使用地点 API (自动完成),但必须在 Google Cloud 控制台中启用 地图 JavaScript API 才能使地点 API 正常工作。

0

将限制条件(设为None)对我有用。


7
移除限制被认为是不良实践,会使你的API变得容易受到攻击。 - mtness
2
@mtness 是的,显然是这样,但是张贴者已经尝试过并没有成功。不幸的是,谷歌的文档也没有更多的帮助。这里的每个答案都提供了新的提示,就像一个猜谜游戏一样... - James Wong

0
Chrome的Javascript控制台建议我在我的HTTP referrer列表中声明整个页面地址,在这种情况下http://mywebsite.com/map.htm,即使确切的地址是http://www.mywebsite.com/map.htm - 我已经按照其他人的建议列出了通配符样式,但这是唯一能为我工作的方法。

0

0
如果你在本地工作,请不要在URL中包含http或https。
使用没有协议的"localhost"。我挣扎了好几天,最终发现这样可行。

0

这里似乎没有人提到的一个可能很重要的问题是:

HTTP引用来源区分大小写

所以,假设有人访问了https://www.example.com/webpage,而有人将该页面的链接编写为https://www.example.com/Webpage,您需要同时输入两个条目,否则其中一个将无法工作(除非您URL重写以删除大写字母,或者用/*替换/Webpage,但在我们的情况下,我们想将其限制在某个域名下的文件夹中,因此这很麻烦)。

我觉得这有点愚蠢。是的,URL可以区分大小写,但不至于如果它是大写字母就限制文件夹,如果是小写字母就不限制,对吧?


0
我所找到的最简洁的答案是使用*example.com/*

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