2011-11-29 73 views
9

我有一个网站,可以通过设计和客户端偏好,使用HTTP或HTTPS提供服务。客户公司简单地选择是否使用http://或https://链接到我们的网站,其余部分由IIS完成。功能正在添加到处理敏感信息的页面,该信息只能通过SSL查看。客户已同意在不使用HTTPS连接时应在此页面上禁用此附加功能。如何检查当前页面是否在ASP.Net中使用SSL?

在Page_Load事件中,我想添加一个IF语句,该语句检查当前是否通过HTTPS查看页面,以显示或禁用此可选功能。我大概可以读取URL来查看它是以https://开头的,但担心这种方法是不安全的。

是否有可以在Page_Load事件期间检查HTTPS的属性?

回答

24

您正在寻找Request.IsSecureConnection

+0

非常感谢SLaks! – David

+0

但它在负载平衡服务器环境中不起作用。请检查这篇文章http://stackoverflow.com/questions/998397/why-does-request-issecureconnection-return-false-when-true-is-expected。我们确实面临同样的问题 –

1

如果您使用IIS 7(或更高版本)并计划通过HTTP连接将到达您的页面的请求重定向到HTTPS连接,请考虑使用IIS URL Rewrite Module

您将可以配置解决方案而不是编码。例如,您可以配置一个重定向规则,以获取像http://my.host.com/my-secure-page.aspx这样的URL并将其重定向到https://my.host.com/my-secure-page.aspx

你可以用这个模块做更多的事情,它的美妙之处在于你可以在不触及你的应用程序代码的情况下做到这一点。

有关更多详细信息,请参阅Redirect HTTP to HTTPS with IIS 7

相关问题