2011-10-19 30 views
0

我已經實現了reCAPTCHA的溶液(最新版本),到我的ASP.NET Web項目。它在我的本地環境中工作正常,但在我們的SSL加密服務器上,我收到警告消息「您是否只想查看安全傳送的網頁內容?此網頁包含的內容不會使用安全的HTTPS連接傳送,這可能會危及整個網頁的安全。「這隻發生在Internet Explorer中。ASP.NET驗證碼在Internet Explorer SSL警告消息

我發現,這些論壇上和其他人不推薦使用的服務器更改爲新的谷歌(舊:https://api-secure.recaptcha.net新:https://www.google.com/recaptcha/api),但我並沒有直接引用的JavaScript文件,只是使用.NET庫。

任何幫助將不勝感激!

回答

3

從瀏覽the control's source,該控件具有一個名爲OverrideSecureMode的屬性,當設置爲true時,始終會使控件通過HTTPS呈現。

The MVC Helper,在另一方面,似乎並沒有允許設置該屬性。它似乎在使用Context.Request.IsSecureConnection來確定使用哪個主機名;發現爲什麼這個價值對你來說是錯誤的是另一種解決問題的方法。

+0

感謝丹。如果我的生命依靠它,我不認爲我會找到源頭! –

+0

關於如何實際設置MVC3中OverrideSecureMode的值的任何建議?當我嘗試這樣做,其中承載recpatcha的HtmlHelper我MVC3 .cshtml頁:'ReCaptcha.OverrideSecureMode = TRUE;'VS說,對OverrideSecureMode定義缺失。再次 – TimH

+0

@TimH,看看源:http://code.google.com/p/recaptcha/source/browse/trunk/recaptcha-plugins/dotnet/library/RecaptchaControlMvc.cs :)回答更新。 –

4

如果MVC助手使用Context.Request.IsSecureConnection丹指出以上,和你的應用程序服務器位於截取HTTPS和前鋒如HTTP,然後OverrideSecureMode將可能是false和渲染會發生不安全的負載平衡器。

如果在負載均衡器後面,找到始發協議的方法之一就是做這樣的事情(假設您可以訪問X-Forwarded-Proto標題字段)。

bool isSecureConnection = String.Equals(
     filterContext.HttpContext.Request.Headers["X-Forwarded-Proto"], 
     "https", 
     StringComparison.OrdinalIgnoreCase); 
+0

的舊版本這是我用從當前請求獲得「環境特定的URL」,從[描述後 - 遠離Request.Url](http://www.rajeeshcv.com/post/details/40/stay-away-from-request-url) – psulek