2011-05-06 60 views
4

我在asp.net mvc下的網頁上使用了reCaptcha。這個網站有一個SSL認證,我和reCaptcha有問題。 這是我上查看代碼:reCaptcha和SSL網站

<script type="text/javascript" src="https://api-secure.recaptcha.net/challenge?k=***Public key****"> </script> 
<noscript> 
<iframe src="https://api-secure.recaptcha.net/noscript?k=***Public key****" height="300" width="500" frameborder="0"></iframe><br /> 
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> 
<input type="hidden" name="recaptcha_response_field" value="manual_challenge" /> 
</noscript> 

,這代碼是我對的AccountController:

private bool PerformRecaptcha() 
{ 
    var validator = new RecaptchaValidator 
    { 
     PrivateKey = "**Private Key***", 
     RemoteIP = Request.UserHostAddress, 
     Response = Request.Form["recaptcha_response_field"], 
     Challenge = Request.Form["recaptcha_challenge_field"] 

    }; 

    try 
    { 
     var validationResult = validator.Validate(); 

     if (validationResult.ErrorMessage == "incorrect-captcha-sol") 
      ModelState.AddModelError("ReCaptcha", string.Format("Please retry the ReCaptcha portion again.")); 

     return validationResult.IsValid; 
    } 
    catch (Exception e) 
    { 
     ModelState.AddModelError("ReCaptcha", "an error occured with ReCaptcha please consult documentation."); 
     return false; 
    } 
} 

和我的庫版本是1.0.5.0。

當我加載登記表我對歌劇此警報:

規則服務器證書的服務器名稱相匹配。你想接受嗎?

如果我接受此證書,顯示reCaptcha代碼,但如果沒有,我不會查看reCaptcha代碼。

你能幫我嗎? 如果您需要更多關於我的代碼的信息,請隨時向我詢問。

問候。

+0

是Google的ASP.NET reCaptcha控件嗎?這只是Opera中的一個問題嗎? – Rup 2011-05-06 13:34:36

+0

不,它會在所有網頁瀏覽器上發生。 – Pipeline 2011-05-07 17:31:27

回答

10

我認爲你需要改變你正在使用的網址,以包含recaptcha。四月份有很多人遇到同樣的問題。 Recaptcha let the certificate到期爲「api-secure.recaptcha.net」。如果您將其更改爲使用「https://www.google.com/recaptcha/api/XXX」網址而不是「https://api-secure.recaptcha.net/XXX」,則應該明確地解決您的問題。

看起來這個實際上已經回答過:recaptcha https problem on https://api-secure.recaptcha.net/。既然你使用.NET庫,我想你的答案是升級你的版本。

+1

實際上,他沒有使用.NET庫來查看需要更改的部分。 – 2011-05-06 20:46:22

+0

直到星期一我都無法測試此解決方案,但我認爲這將是解決方案。感謝您的回答! – Pipeline 2011-05-07 17:38:56

2

上JasonStoltz的回答銳化了起來:

  • 您已經在使用最新的DLL版本,則無需更新此
  • 可以/應該使用RecaptchaControlMvc.GenerateCaptcha()方法,在你的視圖,而不是編寫你自己的(它將使用新的URL)
+0

阿德里安,thansk爲您的答案,週一我嘗試這兩種解決方案。 – Pipeline 2011-05-07 17:40:15