我在联系表单上有一个简单的Google ReCaptcha V2(不可见)。这与在主域上完全一样。但是,我无法在子域上使用它。
单击按钮时,它始终返回false。
我的课
public class ReCaptcha
{
public bool Success { get; set; }
public List<string> ErrorCodes { get; set; }
public static bool Validate(string encodedResponse)
{
if (string.IsNullOrEmpty(encodedResponse)) return false;
var client = new System.Net.WebClient();
var secret = ConfigurationManager.AppSettings["Google.ReCaptcha.Secret"];
if (string.IsNullOrEmpty(secret)) return false;
var googleReply = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secret, encodedResponse));
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var reCaptcha = serializer.Deserialize<ReCaptcha>(googleReply);
return reCaptcha.Success;
}
}
我的表单代码后面
protected void Submit(object sender, EventArgs e)
{
var encodedResponse = Request.Form["g-Recaptcha-Response"];
var isCaptchaValid = ReCaptcha.Validate(encodedResponse);
if (!isCaptchaValid)
{
Response.Write("Incorrect, please try again.");
}
只要用户通过ReCaptcha验证,就继续提交消息。它没有通过;所以我不断收到“重试”消息。
在前面
<div class="g-recaptcha" data-sitekey="SITE KEY" data-size="invisible"></div>
<asp:Button ID="Button1" runat="server" Text="Send Message" OnClick="Submit" />
我对密钥进行了两次检查和三次检查-它们是正确的。徽章没有显示任何错误。我尝试在管理面板上更新ReCaptcha,以包括子域...即使它应该自动接受它。我什至尝试为子域创建一个新的api密钥。是的,我已经多次清除浏览器缓存。
我的想法已经用完了。任何和所有帮助表示赞赏。