我正在使用PHP开发网站,想在其中一个会话中进行人类验证。在开发过程中,我最初在本地运行系统,当准备好之后,我将把它放在某个域名上。
在reCAPTCHA网站上说插件只能在给定的域名(和子域)上工作。
有没有办法在本地主机上使用reCAPTCHA插件?
我正在使用PHP开发网站,想在其中一个会话中进行人类验证。在开发过程中,我最初在本地运行系统,当准备好之后,我将把它放在某个域名上。
在reCAPTCHA网站上说插件只能在给定的域名(和子域)上工作。
有没有办法在本地主机上使用reCAPTCHA插件?
原回答已不再正确。现在的开发者指南中写道:
“如果您想在开发过程中使用 'localhost',则必须将其添加到域名列表中。”
这只有在您使用 127.0.0.1/...
而非 localhost/...
访问 localhost 时才有效。
以下是原回答,仅供参考。
“默认情况下不再支持 localhost 域名。如果您希望继续为开发过程中的 localhost 提供支持,则可以将其添加到站点密钥支持域名列表中。请前往管理控制台更新您的受支持域名列表。我们建议为开发和生产使用不同的密钥,并在生产站点密钥上不允许使用 localhost。”
换句话说,只需使用相同的密钥即可。
6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
秘密密钥:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
reCAPTCHA小部件将显示警告消息,以声称它仅供测试目的。请勿将这些密钥用于生产流量。6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
和 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
。 - Adam Zerner只需将默认情况下不再支持本地主机域。如果您希望继续支持它们进行开发,可以将它们添加到受支持域名列表中以获取站点密钥。转到管理控制台以更新受支持域名列表。我们建议为开发和生产使用单独的密钥,并在生产站点密钥上不允许使用本地主机。
localhost
添加到您的站点域名列表中即可。localhost
,但仍然出现错误消息“Localhost 不在此站点密钥支持的域列表中。” - aadi1295非常简单:
localhost
和 127.0.0.1
添加到新站点的域名中,如下图所示。更新:
如果您的问题是如何在Google网站上设置reCAPTCHA以在本地主机上使用它,那么它必须按照我上面写的方式进行,但如果您想知道如何在本地主机和网站主机上使用reCAPTCHA,并通过最少量的代码在您的控制器中防止一些代码,如 ConfigurationManager.AppSettings [“ReCaptcha:SiteKey”]
,那么我会在我的回答中为您提供这个额外的描述和代码。
您喜欢以下的GET和POST操作吗?
下面的代码支持reCAPTCHA,不需要任何其他处理reCAPTCHA的代码。
[HttpGet]
[Recaptcha]
public ActionResult Register()
{
// Your code in the GET action
}
[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
// Your code in the POST action
if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
{
// Your code
}
// Your code
}
在View视图中:(参考链接)
@ReCaptcha.GetHtml(@ViewBag.publicKey)
@if (ViewBag.RecaptchaLastErrors != null)
{
<div>Oops! Invalid reCAPTCHA =(</div>
}
使用方法:
A) 将以下ActionFilter
添加到您的Web项目中:
public class RecaptchaAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
filterContext.ActionParameters["ReCaptcha_SecretKey"] = ConfigurationManager.AppSettings[$"{setting_Key}:SecretKey"];
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
filterContext.Controller.ViewBag.Recaptcha = ReCaptcha.GetHtml(publicKey: ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"]);
filterContext.Controller.ViewBag.publicKey = ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"];
}
}
B) 将 reCAPTCHA 设置密钥添加到您的 webconfig
文件中,分别对 localhost
和 website
进行设置,如下所示:
<appSettings>
<!-- RECAPTCHA SETTING KEYS FOR LOCALHOST -->
<add key="ReCaptcha_Local:SiteKey" value="[Localhost SiteKey]" />
<add key="ReCaptcha_Local:SecretKey" value="[Localhost SecretKey]" />
<!-- RECAPTCHA SETTING KEYS FOR WEBSITE -->
<!--<add key="ReCaptcha:SiteKey" value="[Webite SiteKey]" />
<add key="ReCaptcha:SecretKey" value="[Webite SecretKey]" />-->
<!-- OTHER SETTING KEYS OF YOUR PROJECT -->
</appSettings>
注意:通过这种方式,您不需要在 post action 或任何 ViewBag
中手动设置 reCaptcha_SecretKey
参数以便为reCaptcha设置。在运行时,所有这些都将自动填充为适当的值,具体取决于您是在本地主机还是网站上运行项目。
localhost
和127.0.0.1
。感谢你。 - Megajin当您在Google reCAPTCHA中添加域名时:
添加新域名:
本地主机,而非localhost
“L”是大写字母。
Localhost
或localhost
没有任何区别。 - jstuardo截至2021年1月2日,Google在这篇文章中发布了两个测试用的密钥。
我想要使用reCAPTCHA进行自动化测试。我该怎么做? 对于reCAPTCHA v3,请创建一个单独的测试环境密钥。由于reCAPTCHA v3依赖于真实流量,得分可能不准确。
对于reCAPTCHA v2,请使用以下测试密钥。您将始终获得“无验证码”,并且所有验证请求都将通过。
Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
reCAPTCHA小部件将显示警告消息,以确保不用于生产流量。
第一次使用密钥生成的电子邮件进入了垃圾邮件文件夹。
移除当前的 reCAPTCHA 密钥,注册新密钥,并使用这些域名设置您的密钥设置:
127.0.0.1
localhost
在您的Google验证码网站(https://www.google.com/recaptcha/admin/site/{siteid}/settings)的域名列表中,添加LOCALHOST
。
如果以上方法不起作用,请尝试添加127.0.0.1
。
Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe