2011-10-19 21 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