2014-11-24 81 views
2

最近一个客户告诉我他的网站的reCAPTCHA不再工作。经过调查,我发现谷歌改变了它。我使用2014年11月19日的新文档升级了他们的网站,但它总是给我一个403错误。我试着只提交密钥,并返回一个带有错误和错误的JSON结果。我只是提交了g-recaptcha-response字段的响应,并且还返回了带有错误的JSON结果。只要我使用http_build_query将它们放到一个字符串中,我就会从Google获得403禁止。Ne reCAPTCHA给我一个403错误

我正在使用新的http://www.google.com/recaptcha/api/siteverify URL。我使用PHP cURL使用以下代码提交给它:

$post_data = array('response'=>$response, 'secret'=>$privatekey); 
    $curlPost = http_build_query($post_data, '', '&'); 

    $ch = curl_init(); 

    //Set the URL of the page or file to download. 
    $url = 'http://www.google.com/recaptcha/api/siteverify'; 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 

    $data_json = curl_exec($ch); 

任何帮助将不胜感激。

+0

你的JSON结果是什么? (另外,我对reCAPTCHA知之甚少,但从[文档](https://developers.google.com/recaptcha/docs/verify)的外观来看,您不应该使用GET请求,而应该) – 2014-11-24 21:59:44

回答

4

你必须使用HTTPS,所以正确的网址是:

$url = 'https://www.google.com/recaptcha/api/siteverify'; 

这应该可以解决403错误。

+0

我使用https网址:https://www.google.com/recaptcha/api/siteverify但我收到错误**尝试了所有:1个地址,但无法通过HTTPS连接到服务器: google.com端口:443 **。我在服务器端使用Java来验证g-recaptcha-response字符串。可能是这个错误的原因是什么? – 2017-11-05 06:58:40