ASP.net检查页面是http还是https

44

我有一个网络应用程序,托管在多个服务器上,其中一些服务器使用https。如何从代码后台检查页面当前是http还是https?

7个回答

86

您可以参考 HttpRequest 类中的 Request.IsSecureConnection 属性。如果需要在页面、用户控件或类似情况之外进行完整引用,则使用 HttpContext.Current.Request.IsSecureConnection


9
注意:IsSecureConnection可能会返回错误的结果。当期望为真时,它可能会返回false。参考https://dev59.com/InNA5IYBdhLWcg3wWsYA - Jude Allred
2
答案有点旧了,现在对我来说有点变化了,使用owin。我通过"System.Web.HttpContext.Current.GetOwinContext().Request.IsSecure"获取值。也许这对以后的某个人会有用。 :) - MGR

29

8

Aspnet Core 2.0有更新,现在你应该在控制器内使用Request.IsHttps


从NET Core 2.2开始,您可以使用Request.Scheme,它应该返回httpshttp。在Windows服务器上,两者都可以正常工作,尽管在Ubuntu上,IsHttpsRequest.Scheme都显示请求不安全,因此不确定这是否是错误或配置错误。 - Robin Wilson

8
使用 - HttpContext.Current.Request.IsSecureConnection。此代码可用于检查当前请求是否使用安全连接(HTTPS)。

4

或者:

Request.ServerVariables["SERVER_PROTOCOL"];

1
这对我来说在http和https上都返回HTTP/1.1,而Request.IsSecureConnection则如预期返回。 - atheaos

2

In .net core I use:

Context.Request.Scheme == Uri.UriSchemeHttps

1

试试这个,

aCookie.Secure = HttpContext.Current.Request.IsSecureConnection

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接