如何解决MVC中出现的‘ERROR for site owner: Invalid site key’错误?
解决Google reCAPTCHA "Invalid site key" 错误
看起来你遇到的问题主要来自两个核心点:重复渲染验证码控件,以及可能的密钥配置不匹配,咱们一步步来排查修复:
1. 移除重复的reCAPTCHA渲染代码
你同时用了两种方式添加reCAPTCHA:
reCAPTCHA.MVC提供的@Html.Recaptcha()辅助方法- 手动编写的
<div class="g-recaptcha" data-sitekey="xxx"></div>
这两种方式二选一即可,同时存在会导致控件冲突——@Html.Recaptcha()已经会自动渲染对应的验证码控件,不需要手动添加div。建议保留辅助方法的实现,删除手动编写的div代码。
修正后的表单代码示例:
@using reCAPTCHA.MVC <html> <head> <script src='https://www.google.com/recaptcha/api.js'></script> </head> <body> @using (Html.BeginForm()) { @Html.Recaptcha() @Html.ValidationMessage("ReCaptcha") <input type="submit" value="Register" /> } </body> </html>
2. 确保web.config中的密钥配置准确
reCAPTCHA.MVC依赖web.config的<appSettings>节点配置密钥,要注意两个关键点:
- 配置项的键名必须是
ReCaptchaPublicKey(对应公钥)和ReCaptchaPrivateKey(对应私钥) - 密钥必须是Google控制台生成的reCAPTCHA v2类型密钥(不能用v3密钥,二者不兼容)
配置示例:
<appSettings> <add key="ReCaptchaPublicKey" value="你的site key(公钥)" /> <add key="ReCaptchaPrivateKey" value="你的private key(私钥)" /> </appSettings>
3. 验证密钥的域名权限
在Google reCAPTCHA控制台创建密钥时,必须把当前项目的域名加入允许列表:
- 本地测试要添加
localhost - 线上环境要添加实际的业务域名
如果域名不在允许列表里,即使密钥正确也会触发"Invalid site key"错误。
4. 清除缓存后测试
浏览器缓存可能残留旧的密钥配置,建议清除浏览器缓存或者用无痕模式重新加载页面,验证错误是否消失。
按照上面的步骤调整后,应该就能解决当前的验证码密钥错误问题了。
内容的提问来源于stack exchange,提问作者User9895
相关产品推荐
相关产品推荐

