如何检查当前页面是不是在 ASP.Net 中使用 SSL?

Posted

技术标签:

【中文标题】如何检查当前页面是不是在 ASP.Net 中使用 SSL?【英文标题】:How do you check if the current page is using SSL in ASP.Net?如何检查当前页面是否在 ASP.Net 中使用 SSL? 【发布时间】:2012-01-08 09:58:15 【问题描述】:

我有一个网站,根据设计和客户偏好,可以使用 HTTP 或 HTTPS 提供服务。客户公司只需选择是否使用 http:// 或 https:// 链接到我们的站点,其余的由 IIS 完成。正在向页面添加一项功能,该功能处理只能通过 SSL 查看的敏感信息。客户已同意在不使用 HTTPS 连接时应在此页面上禁用此附加功能。

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

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

【问题讨论】:

【参考方案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。

【讨论】:

【参考方案2】:

您正在寻找Request.IsSecureConnection

【讨论】:

但它在负载均衡服务器环境中不起作用。请查看此帖子***.com/questions/998397/…。我们确实面临同样的问题

以上是关于如何检查当前页面是不是在 ASP.Net 中使用 SSL?的主要内容,如果未能解决你的问题,请参考以下文章

确定页面在 JavaScript 中是不是有效 - ASP.NET

使用 C# 在 ASP.NET 中检查 SQL Server 表中的列值是不是为空

如何从 ASP.NET 页面获取当前登录的 Windows 帐户?

如何确定当前在 ASP.Net 中是不是有任何文件正在上传?

如何判断 JavaScript 文件是不是已包含在 ASP.NET 页面中?

能够在 ASP.NET 中包含文件,但不检查它是不是存在