【问题标题】:ASP.net check if page is http or httpsASP.net 检查页面是 http 还是 https
【发布时间】:2010-11-24 06:59:52
【问题描述】:

我有一个托管在多个服务器上的 Web 应用程序,其中一些服务器位于 https 上。如果页面当前在 http 或 https 中,我如何从后面的代码中检查?

【问题讨论】:

    标签: asp.net https


    【解决方案1】:

    您可以参考HttpRequest 类的Request.IsSecureConnection 属性。如需页面、用户控件或类似内容之外的完整参考,请使用HttpContext.Current.Request.IsSecureConnection

    【讨论】:

    • 当心- IsSecureConnection 可能会给出假阴性。 stackoverflow.com/questions/998397/…
    • 答案有点老了,所以现在,对我来说,它有点改变了 owin。我通过“System.Web.HttpContext.Current.GetOwinContext().Request.IsSecure”获得了值。可能这对以后的某个人来说很方便。 :)
    【解决方案2】:
    Page.Request.Url.Scheme
    

    也可以。它返回httphttps等。

    参考:http://msdn.microsoft.com/en-us/library/system.uri.scheme.aspx

    【讨论】:

      【解决方案3】:

      使用 - HttpContext.Current.Request.IsSecureConnection

      【讨论】:

        【解决方案4】:

        Aspnet Core 2.0 的更新,现在,您应该在控制器中使用 Request.IsHttps

        【讨论】:

        • 从 NET Core 2.2 开始,您可以使用 Request.Scheme,它应该返回 httpshttp。要么在 Windows 服务器上正常工作,尽管在 Ubuntu IsHttpsRequest.Scheme 上都说请求对我来说不安全,所以不确定这是错误还是配置错误。
        【解决方案5】:

        或者:

        Request.ServerVariables["SERVER_PROTOCOL"];
        

        【讨论】:

        • 这会在 http 和 https 上为我返回 HTTP/1.1,而 Request.IsSecureConnection 按预期返回。
        【解决方案6】:

        试试这个,

        aCookie.Secure = HttpContext.Current.Request.IsSecureConnection
        

        【讨论】:

          【解决方案7】:

          在 .net 核心中我使用:

          Context.Request.Scheme == Uri.UriSchemeHttps
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多