我正在使用PHP开发网站,并且希望在其中一个会话中进行人工验证。对于开发,我最初是在本地运行该系统,当它准备就绪时,我将把它安装在某个域中。
在reCAPTCHA网站上,据说该插件只能在给定的域(和子域)上工作。
我的问题是:有什么方法可以在本地主机上使用reCAPTCHA插件?
localhost
我正在使用PHP开发网站,并且希望在其中一个会话中进行人工验证。对于开发,我最初是在本地运行该系统,当它准备就绪时,我将把它安装在某个域中。
在reCAPTCHA网站上,据说该插件只能在给定的域(和子域)上工作。
我的问题是:有什么方法可以在本地主机上使用reCAPTCHA插件?
localhost
Answers:
原始答案不再正确。现在,开发人员指南指出:
“如果要使用“ localhost”进行开发,则必须将其添加到域列表中。”
仅当您使用127.0.0.1/...
而不是访问localhost时,此方法才有效localhost/...
。
原始答案保留在下面。
“默认情况下,不再支持localhost域。如果您希望继续支持它们进行开发,则可以将其添加到站点密钥的受支持域列表中。转到管理控制台以更新您的受支持域列表。我们建议使用单独的密钥进行开发和生产,并且不允许在生产站点密钥上使用localhost。”
换句话说,只需使用相同的密钥。
请注意,从2016年开始,ReCaptcha不再天真的支持localhost。从常见问题解答:
默认情况下不再支持localhost域。如果您希望继续支持它们进行开发,则可以将它们添加到站点密钥的受支持域列表中。转到管理控制台以更新您支持的域的列表。我们建议使用单独的密钥进行开发和生产,并且不允许在生产站点密钥上使用localhost。
因此,只需将其添加localhost
到您站点的域列表中,您将变得很好。
localhost
但仍然出现错误“本地主机不是此站点密钥支持的域的列表”。
这为我工作:
“使用以下测试密钥,您将始终获得No CAPTCHA,并且所有验证请求都将通过。
网站密钥: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
密钥: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
reCAPTCHA小部件将显示警告消息,声称它仅用于测试目的。请不要将这些密钥用于您的生产流量。”
BR!
它是如此容易:
localhost
&添加127.0.0.1
到新站点的域中,如下图所示。更新:
如果你的问题是如何设置reCaptcha
在谷歌网站在本地主机使用它的话,我已经写了上面,但如果你是好奇如何使用reCAPTCHA
上都 localhost
并website host
通过在控制器中最小的代码,防止一些类似的代码ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]
它那么我会在回答中提供这些额外的描述和代码,以帮助您。
您喜欢以下GET和POST操作吗?
👇支持reCaptcha,不需要任何其他代码即可处理reCaptcha。
[HttpGet]
[Recaptcha]
public ActionResult Register()
{
// Your codes in GET action
}
[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
// Your codes in POST action
if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
{
// Your codes
}
// Your codes
}
在查看:(参考)
@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
设置键:localhost
website
webconfig
<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>
注意:通过这种方式,您不需要
reCaptcha_SecretKey
在post操作中设置参数,也不需要ViewBag
在Actions和View中手动设置reCaptcha的任何参数,所有这些参数都将在运行时自动用适当的值填充,具体取决于您在本地主机或网站上运行的项目.😉
当您在Google Recaptcha中添加域时
添加新域:Localhost不是本地主机
“ L”为大写字母
祝好运
默认情况下不再支持localhost域。如果您希望继续支持它们进行开发,则可以将它们添加到站点密钥的受支持域列表中。转到管理控制台以更新您支持的域的列表。我们建议使用单独的密钥进行开发和生产,并且不允许在生产站点密钥上使用localhost
- 在– https://www.google.com/recaptcha/admin上注册您的网站。
- 添加js插件3.add类和Google提供的站点密钥
<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="your site-key"></div>
如果您有旧密钥,则应重新创建API密钥。也要注意代理。
https://developers.google.com/recaptcha/docs/domain_validation
检查说可以禁用检查的部分。只为发展而做。
本地主机现在可以使用。但是,请记住,将localhost添加到域名列表后,最多需要30分钟才能生效(根据针对域名列表显示的帮助提示)。
是的,这是一个较旧的问题,但这可能会帮助所有在本地主机上遇到reCaptcha问题的用户。Google确实说过“默认情况下,所有键都可在'localhost'(或'127.0.0.1')上使用”,但实际上在localhost上使用reCaptcha可能会引起问题。就我而言,我使用安全令牌解决了我的问题
我在laravel网站中遇到了与recaptcha有关的错误,我通过使用一些命令并使用env文件解决了它,上面的答案也将有助于解决此问题。
首先检查环境文件(在您的情况下,文件具有Google Recaptcha密钥)以获取Google Recpatcha密钥。
第二个运行这些命令:
PHP的工匠路线:清除
它将解决您的问题