2016-10-13 18 views
1

ReCaptchaをColdFusion(以下の完全なソースコード)で動作させようとしています。私はget/postを使ってみましたが、同じエラーが出ます。Recaptchaエラー:I/O例外:証明書の名前がホスト名と一致しない

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

関連する問題