Recaptcha Validate的JavaScript,JQuery或AJAX版本

我试图使用一些js代码validationrecaptcha但我得到一些权限错误“访问被拒绝”是否有可能使用javascriptvalidation代码和多个浏览器的ajax实现validation。

 $(document).ready(function() { Recaptcha.create("var_public_key", recaptchadiv, { theme: "clean", callback: Recaptcha.focus_response_field }); }); function submitFormData() { var urlString = "http://www.google.com/recaptcha/api/verify"; var params = encodeURI("remoteip=" + $("#userIp").val() +"&privatekey=" + var_private_key + "&challenge=" + Recaptcha.get_challenge() + "&response=" + Recaptcha.get_response()); params = encodeURI(params); var status = document.getElementById("status"); status.className = ""; status.innerHTML = "Submitting your data. Please wait..."; var html = $.ajax({ type: "POST", url: urlString + "?" + params, async: false }).responseText; alert("ResponseText: " + html + ", Recaptcha.responseText: " + Recaptcha.responseText); var result = html.split("\n")[0]; if (result == "true") { status.innerHTML = " "; return true; } else { status.className = "GlobalErrorText"; status.innerHTML = "Your captcha is incorrect. Please try again"; Recaptcha.reload(); return false; } }  

@Boug是对的,这叫做跨站点ajax请求,你可以看到这个问题,看看你是否可以找到解决方案跨站点AJAX请求但….

我认为将你的私钥用于javascript中的recaptcha是一个漏洞,recaptcha应该在服务器端代码上validation,这个问题包含有关如何在Asp.Net MVC中实现recaptcha的有用链接如何为ASP.NET MVC实现reCaptcha? 我使用这种方法,它完美地工作http://www.dotnetcurry.com/ShowArticle.aspx?ID=611&AspxAutoDetectCookieSupport=1

您收到权限错误,因为您的ajax代码正在尝试访问其他站点(谷歌)上的脚本作为您的脚本。 据我所知,我不认为你可以出于安全原因进行跨站点Ajax调用

问题已经得到解答。 但是,这里有一些可以在ASP.NET WebForms中使用的代码,它允许您使用reCaptcha控件向页面发出本地AJAX请求,然后执行服务器端validation码validation。 页面的web方法将返回true / false。

我从mindfire解决方案中获得了这个代码,但在Ajax成功回调中添加了JS函数的执行b / c Ajax正在进行异步回调。

使用Javascript:

  

Page的Web方法(VB.NET):

  _ Public Shared Function ValidateCaptcha(ByVal challengeValue As String, ByVal responseValue As String) As Boolean ' IDEA: Get Private key of the CAPTCHA from Web.config file. Dim captchaValidtor As New Recaptcha.RecaptchaValidator() With { _ .PrivateKey = "your_private_key_goes_here", _ .RemoteIP = HttpContext.Current.Request.UserHostAddress, _ .Challenge = challengeValue, _ .Response = responseValue _ } ' Send data about captcha validation to reCAPTCHA site. Dim recaptchaResponse As Recaptcha.RecaptchaResponse = captchaValidtor.Validate() ' Get boolean value about Captcha success / failure. Return recaptchaResponse.IsValid End Function