2012-08-22 53 views
0

我在我的java jsp安裝程序上使用了recaptcha。我用下面的代碼在我的jsprecaptcha通過http打電話而不是https

<%@ page import="net.tanesha.recaptcha.ReCaptcha"%> 
<%@ page import="net.tanesha.recaptcha.ReCaptchaFactory"%> 


<% 
ReCaptcha c = ReCaptchaFactory.newReCaptcha("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXX", false); 
out.print(c.createRecaptchaHtml(null, null)); 
out.flush(); 
%> 

但是該網站使用HTTPS,所以我得到「只顯示安全內容」的消息在IE瀏覽器的。

如果我看源驗證碼已產生以下

<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=XXXXXXXXXXXXXXXXXXXXXXX"></script> 

如何強制驗證碼使用https而不是http?

回答

8

望着source code,您需要更改:

ReCaptchaFactory.newReCaptcha( //... 

有:

ReCaptchaFactory.newSecureReCaptcha( //... 

這就是它!

+0

感謝。這改變了http爲https。它仍然在本地工作,但是當我在我的SSL站點上託管它時,它無法從谷歌加載資源。我得到document.write('輸入錯誤:無效的引用者');任何想法爲什麼? – jaseFace

+0

@ user456147:對不起,不是。我不知道你正在使用的圖書館。考慮問另一個問題? –

+0

沒有probs。原來我需要申請一個新的私鑰和公鑰。乾杯。 – jaseFace

0

見你能做到這樣,使之適用於安全和非安全內容

ReCaptcha c=null; 

if(request.getScheme().equals("https")) 
{ 

    c= ReCaptchaFactory.newSecureReCaptcha(
      Constants.RECATCHA_PUBLIC_KEY, 
      Constants.RECATCHA_PRIVATE_KEY, false); 
}else{ 

    c = ReCaptchaFactory.newReCaptcha(
      Constants.RECATCHA_PUBLIC_KEY, 
      Constants.RECATCHA_PRIVATE_KEY, false); 

}