我正在使用google recaptcha到laravel 5的默认内置登录,并且我正在从API中捕获验证码的验证响应(例如成功:true | false)。下面是我用来与googles recaptcha API进行通信的脚本。
//trigger the login button
$("#loginbutton").click(function (e) {
/* Check if the captcha is complete */
var captchaResponse = $("#g-recaptcha-response").val();
if ($("#g-recaptcha-response").val()) {
$.post("https://www.google.com/recaptcha/api/siteverify?secret=MySecretKeyHere&response=" + captchaResponse, {/* no data */}, function(response){
if(response.success)
{
alert("asdasd");
}
}, 'json');
} else {
alert("Please fill the captcha!");
}
e.preventDefault();
});
但遗憾的是没有工作,相反我得到了这个错误(参见下文)
recaptcha__fil.js:163 XHR已完成加载:POST“https://www.google.com/recaptcha/api2/reload?k=mySiteKey”。xj.send @ recaptcha__fil.js:163Uk @ recaptcha__fil.js:211f.wj @ recaptcha__fil.js:209f.ye @ recaptcha__fil.js :207f.kb @ recaptcha__fil.js:207f.send @ recaptcha__fil.js:208Wk.send @ recaptcha__fil.js:212L @ recaptcha__fil.js:33Wk.send @ recaptcha__fil.js:212(匿名函数)@ recaptcha__fil.js:284 (匿名函数)@ recaptcha__fil.js:193z.la @ VM12395:1(匿名函数)@ recaptcha__fil.js:193e.Ob.e.wd @ recaptcha__fil.js:36fd @ recaptcha__fil.js:40bd @ recaptcha__fil.js:40L .kj @ recaptcha__fil.js:39Ic @ recaptcha__fil.js:33 recaptcha__fil.js:163 XHR完成加载:POST“https://www.google.com/recaptcha/api2/userverify?k=mySiteKey”。xj.send @ recaptcha__fil.js:163Uk @ recaptcha__fil.js:211f.wj @ recaptcha__fil.js:209f.ye @ recaptcha__fil.js:207f。 kb @ recaptcha__fil.js:207f.send @ recaptcha__fil.js:208Wk.send @ recaptcha__fil.js:212L @ recaptcha__fil.js:33Wk.send @ recaptcha__fil.js:212(匿名函数)@ recaptcha__fil.js:286(匿名函数)@ recaptcha__fil.js:193z.la @ VM12474:1(匿名函数)@ recaptcha__fil.js:193e.Ob.e.wd @ recaptcha__fil.js:36fd @ recaptcha__fil.js:40bd @ recaptcha__fil.js:40L.kj @ recaptcha__fil.js:39Ic @ recaptcha__fil.js:33 jQuery-2.1.3.min.js:4 OPTIONS https://www.google.com/recaptcha/api/siteverify?secret=MySecretKey n.ajaxTransport.k.cors.a.crossDomain.send @ jQuery-2.1.3.min.js:4n.extend.ajax @jQuery-2.1 .3.min.js:4n.each.n。(匿名函数)@jQuery-2.1.3.min.js:4(匿名函数)@ login:53n.event.dispatch @jQuery-2.1.3.min。 js:3n.event.add.r.handle @ jQuery-2.1.3.min.js:3 login:1 XMLHttpRequest无法加载https://www.google.com/recaptcha/api/siteverify?secret=MySecretKey。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://juliver.motgh.com”访问。响应的HTTP状态代码为405。
有什么想法吗?线索?救命?建议?建议?
答案 0 :(得分:2)
您 CAN' T 使用您的密钥FROM CLIENT验证您的客户端答案。您必须仅从SERVER端执行此操作。因此,请更改代码以转到您的服务器(WebAPI等),然后从那里执行POST到Google URI。它应该工作。否则进行此检查是没有意义的 - 您正在分享您的密钥......
答案 1 :(得分:0)
请求的资源上没有'Access-Control-Allow-Origin'标头。
这意味着您尝试使用的API不允许从 http://juliver.motgh.com 进行访问。
要理解请求以这种方式失败的原因,请了解HTTP access control (CORS)。
Bhavin Solanki的回答可能会帮助您真正解决问题,您的后端不会对您的请求设置访问控制。