reCAPTCHA错误:站点密钥的域无效

98

我按照示例的方式实现了我的reCAPTCHA。

我在标签中添加了以下脚本:

<script src="https://www.google.com/recaptcha/api.js"></script>

在我的HTML中的form表单中,我有:

<div class="g-recaptcha" data-sitekey="my public sitekey here"></div>

但是当我加载form时,出现了这个错误:

错误:站点密钥无效的域名。

我已确认这是我的域名的正确网站密钥。

代码当前位于子域中,因此我认为可能是这个问题,所以我也在Google reCAPTCHA管理员中添加了子域,但仍然出现错误。

完全相同的代码在不同的域中(具有特定于该域的密钥)百分百有效。
可能出了什么问题?


我曾经遇到过这个问题,不得不登录我的reCAPTCHA仪表板,并为特定的密钥设置添加新页面的URL,因为我的旧URL已更改。 - Saad A
18个回答

64

如果有人遇到类似的问题,我的解决方案是删除不起作用的密钥,并为我的域名获取一个新的密钥。现在,无需在reCAPTCHA管理区域中显式指定子域名,即可在所有子域名上使用它。


11
您的旧密钥是用于 reCaptcha v1,新密钥是用于 reCaptcha v2。 - Max
1
@Max 在我的管理列表中,它显示为v2,但无法工作。我删除了密钥并重新生成,然后它就可以工作了。 - Swatantra Kumar
谢谢,但是对于WordPress来说您的解决方法不可行,因为那是4年前的事情了。所以我使用了这个链接(https://wordpress.org/support/topic/google-recaptcha-error-for-owner-invalid-key-type/),现在我们应该使用版本2而不是版本3,或许明天我们就该用3而不是2了,哈哈。 - Malus Jan
render="在这里使用相同的站点密钥",对于这行代码也一样:grecaptcha.execute('在这里使用相同的站点密钥') - JWC May

34

首先,密钥在https://www.google.com/recaptcha/admin#list进行管理。

我遇到了这个错误,因为我在几个不同的域上使用了相同的密钥,但我忘记将其中一个域添加到密钥中。

添加完我的站点后,需要一两分钟(很可能是由于缓存)才能使事情正常工作。


34

我遇到了同样的问题,但最终解决了。

我访问了 https://www.google.com/recaptcha/admin,点击了域名,然后跳转到底部的“密钥设置”页面。

在那里,我取消了以下选项: 域名验证 验证reCAPTCHA解决方案的来源

保存后,验证码开始正常工作了。

我认为这可能与服务器的设置有关。 我使用的是共享主机,并且由于前任Liquidweb将其共享主机出售给Deluxehosting而无通知地将其转移,所以遇到了许多问题。

我认为在这种情况下,谷歌正在检查服务器,但它识别为共享服务器名称而不是我的域名。 当我取消“验证来源”时,它就可以正常工作了。 希望这能暂时解决问题。


1
这真让我受益,谢谢。我不得不将我的域更改为“my-domain.com”,并删除开头的"http://"部分。以下Google文章描述了格式和允许使用的域:"https://developers.google.com/recaptcha/docs/domain_validation" - ReneGAED

23

无需创建新密钥,只需在浏览器上清除网站数据

如果您更改了站点域名,则将该域名添加到现有密钥中(不必创建新密钥),然后保存。

https://www.google.com/recaptcha/admin#list

但是,Google reCAPTCHA在浏览器上存储了一些数据。清除它们,然后就可以在您的新域上使用它。 输入图像描述


13

我猜最快的方法就是在开发过程中禁用域名检查。

输入图像描述

8

在单元测试期间,我使用本地主机进行测试,但我的Recaptcha密钥注册到了127.0.0.1。因此,我将浏览器更改为指向127.0.0.1,然后它就开始工作了。虽然我能够将“localhost”添加到我的ReCaptcha密钥设置的域列表中,但我仍然无法使用localhost进行单元测试。我必须使用回送IP地址127.0.0.1。


7
您可能不小心使用了私钥而非公钥。

3
你怎么知道的? - g.pickardou

6

在重新生成解决90%问题的密钥之前,还有另一点需要注意。

例如,您的xampp目录是C:\xampp, 并且htdocs文件夹是C:\xampp\htdocs

我们想打开名为:example-cap.html的页面
但是该页面显示错误:

站点密钥的域无效

请在浏览器地址栏中使用您的本地主机地址,例如:

localhost/example-cap.html

这将解决您的问题

不要使用地址c:\xampp\htdocs\example-cap.html
这将会产生错误


你有没有使用过任何方法来开发电子封装应用程序? - undefined

5

尝试添加没有 http://https:// 的域名,例如 example.com


4

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