ReCaptcha总是在子域上返回False

时间:2019-11-26 22:54:36

标签: c# asp.net subdomain recaptcha invisible-recaptcha

我在联系表单上有一个简单的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密钥。是的,我已经多次清除浏览器缓存。

我的想法已经用完了。任何和所有帮助表示赞赏。

0 个答案:

没有答案