Javascript 谷歌';s的新reCaptcha站点验证未返回任何响应

Javascript 谷歌';s的新reCaptcha站点验证未返回任何响应,javascript,cors,recaptcha,verification,Javascript,Cors,Recaptcha,Verification,在通过用户验证获得g-recaptcha-response后,我会这样做 我发送了带有参数的xhr POST,得到了200个OK,但没有得到应有的响应: { "success": true|false, "error-codes": [...] // optional } 代码 var onReturnCallback=函数(响应){ document.getElementById('resp')。innerHTML=response;//工作正常 //警报('grecaptch

在通过用户验证获得
g-recaptcha-response
后,我会这样做

我发送了带有参数的xhr POST,得到了200个OK,但没有得到应有的响应:

{
  "success": true|false,
  "error-codes": [...]   // optional
}
代码

var onReturnCallback=函数(响应){
document.getElementById('resp')。innerHTML=response;//工作正常
//警报('grecaptcha.getResponse()='+grecaptcha.getResponse());//也可以正常工作
$.post(”https://www.google.com/recaptcha/api/siteverify", 
{秘密:“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,
答复:答复,,
remoteip://可选,不影响空结果
}).完成(功能(数据){
警报(“从POST返回的数据:+Data.toString());
console.dir(数据);
});  
};
形式。
我在控制台中打印的对象完全为空(除了
statusText='error'
),请参阅

控制台中还有其他错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”

如何处理?我可以更改原始标题吗?如何验证


由于防止XSS攻击的所谓“同源策略”(SOP),除了为网站服务的主机之外,不可能向其他主机发出XHR(“AJAX请求”)

但是,您可以从在自己的主机上运行的php代理发布到reCaptcha站点。给出了一个例子。这还可以防止查看客户端源代码的人公开您的秘密


另一种可能性(取决于您想要使用的服务)是。由于XHR是禁止的,但从外部主机加载脚本是不允许的,因此可以通过查询参数将回调函数的名称添加到脚本URL中。然后在加载外部资源后立即调用此函数。但据我所知,reCaptcha不支持JSONP。

reCaptcha据称支持将JSONP作为数据类型参数的合法值。

您不能对主机执行XHR请求,这些主机未被服务器发送的http响应明确列为白名单。看看这个问题:@SebastianS,谢谢你。它帮助了我。你可以给我一个答案,我来核对一下。
<script type='text/javascript'>    
var onReturnCallback = function(response) { 
document.getElementById('resp').innerHTML = response; // works well
//alert('grecaptcha.getResponse() = ' + grecaptcha.getResponse()); // works well too
$.post("https://www.google.com/recaptcha/api/siteverify", 
          { secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            response: response,
            remoteip :  "<?php echo $ip;?>" // optional, does not influence an empty result           
           }).complete(function( data ) {
                alert( "Data returned from POST: " + data.toString() );
                console.dir(data);
              });  

};
</script>
Form.  
<form method="post"> 
<div class="g-recaptcha" data-sitekey="6LdYKQkTAAAAAD9K6-kHspFUPUnftw1RxP5_awi0" data-callback="onReturnCallback" data-theme="light">       </div>
<input name="send" type="submit" />
</form>