2016-10-13 2 views
1

Итак, я пытаюсь заставить ReCaptcha работать над ColdFusion (полный исходный код ниже). Я попытался использовать как get/post, так и получить ту же ошибку.Ошибка Recaptcha: исключение ввода-вывода: имя в сертификате не совпадает с именем хоста

I/O Exception: Name in certificate `google.com' does not match host name `www.google.com' 

CFHTTP Error

я преобразовал свой код в PHP (полный исходный код ниже), и она отлично работает. Единственное различие заключается в том, что PHP-код использует метод get только.

Любые идеи, что я могу делать неправильно? Спасибо за помощь.

код Coldfusion:

<cfif StructKeyExists(Form, "submit")> 
    <cfset googleurl = "https://www.google.com/recaptcha/api/siteverify" /> 
    <cfset recaptchasecret = "secret-key-here" /> 
    <cfset recaptcha = FORM["g-recaptcha-response"] > 
    <cfset remoteip = CGI["remote_addr"] /> 

    <!---post method---> 
    <!---<cfhttp url="#googleurl#" method="post" resolveURL="yes"> 
     <cfhttpparam type="formfield" name="secret" value="#recaptchasecret#" /> 
     <cfhttpparam type="formfield" name="response" value="#recaptcha]#" /> 
     <cfhttpparam type="formfield" name="remoteip" value="#remoteip#" /> 
    </cfhttp>---> 

    <!---get method---> 
    <cfhttp url="#googleurl#?secret=#recaptchasecret#&response=#recaptcha#&remoteip=#remoteip#" method=get/> 

    <cfdump var="#cfhttp#"><hr> 
    <cfabort> 
</cfif> 

<html> 
    <head> 
     <title>Google recapcha demo - Codeforgeek</title> 
     <script src='https://www.google.com/recaptcha/api.js'></script> 
    </head> 
    <body> 
     <h1>Google reCAPTHA Demo</h1> 
     <form id="comment_form" action="test.cfm" method="post"> 
      <input type="email" placeholder="Type your email" size="40"><br><br> 
      <textarea name="comment" rows="8" cols="39"></textarea><br><br> 
      <input type="submit" name="submit" value="Post comment"><br><br> 
      <div class="g-recaptcha" data-sitekey="site-key-here"></div> 
     </form> 
    </body> 
</html> 

PHP код:

<?php 
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
     var_dump($_POST); 

     $googleurl = "https://www.google.com/recaptcha/api/siteverify"; 
     $secretKey = "secret-key-here"; 
     $captcha=$_POST['g-recaptcha-response']; 
     $ip = $_SERVER['REMOTE_ADDR']; 

     $response=file_get_contents($googleurl."?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip); 

     $responseKeys = json_decode($response,true); 

     var_dump($responseKeys); 
    } 
?> 

<html> 
    <head> 
     <title>Google recapcha demo - Codeforgeek</title> 
     <script src='https://www.google.com/recaptcha/api.js'></script> 
    </head> 
    <body> 
     <h1>Google reCAPTHA Demo</h1> 
     <form id="comment_form" action="test.php" method="post"> 
      <input type="email" placeholder="Type your email" size="40"><br><br> 
      <textarea name="comment" rows="8" cols="39"></textarea><br><br> 
      <input type="submit" name="submit" value="Post comment"><br><br> 
      <div class="g-recaptcha" data-sitekey="site-key-here"></div> 
     </form> 
    </body> 
</html> 

ответ

0

Это вопрос SSL - Java не может подключиться к "www.google.com" правильно. В качестве временного обходного пути используйте <cfset googleurl = "https://google.com/recaptcha/api/siteverify" />. Но определенно обновите сертификационный магазин java.

+0

Вы должны обязательно использовать ssl-url и POST. Как вы, вы раскрываете свой секретный ключ. – Jules