【问题标题】:Make website run on HTTPS only使网站仅在 HTTPS 上运行
【发布时间】:2015-12-21 11:59:55
【问题描述】:

我在 asp.net 中构建了一个在 HTTP 和 HTTPS 上运行的 Web 应用程序。

我想让它只在 HTTPS 上运行。

任何知道它会涉及什么变化的机构

我对此一无所知?

【问题讨论】:

    标签: c# asp.net https web


    【解决方案1】:

    在您的网络服务器中,只需将 HTTP 网址重定向到相应的 HTTPS 网址。请查看http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using-url-rewrite-2-0/

    【讨论】:

    • 我尝试实现这种方法,但在进行链接中提到的所有设置后,网站仍然在 http 上运行,而不是重定向到 https。
    【解决方案2】:

    您可以在 Global.asax.cs 文件中添加该代码

    protected void Application_BeginRequest()
    {
      if (FormsAuthentication.RequireSSL && !Request.IsSecureConnection)
      {
        Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"));
      }
    }
    

    【讨论】:

    • 我试过这个解决方案,效果很好。但是如果我添加 Application_BeginRequest(),我的网页会加载多次。这背后的原因是什么?
    【解决方案3】:

    Global.asax.cs 中只需添加此代码。考虑 Request.IsLocal 进行本地开发。

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext context = HttpContext.Current;
        if (!context.Request.IsSecureConnection && !context.Request.IsLocal)
        {
            Response.Redirect(context.Request.Url.ToString().Replace("http:", "https:"));
        }
    }
    

    阅读更多关于 www 而不是 www 重定向 herehere

    【讨论】:

    • 我试过这个解决方案,效果很好。但是如果我添加 Application_BeginRequest(),我的网页会加载多次。这背后的原因是什么?
    • 我不明白my web page loads multiple times 是什么意思。如果您请求 http,它将被重定向到 https,因此将向服务器发送 2 个请求。如果您请求 https,则不会出现 Response.Redirect
    • 是的,我知道 2 个请求将被发送到服务器。但是在这两个请求之后,页面加载了一次,但没有输入Application_BeginRequest。我尝试创建一个示例网站并添加Application_BeginRequest 它会多次加载页面,不明白为什么?
    • 我制作了一个示例网站,它运行良好。拜托,你能和我分享你的代码吗?
    • 我通过visual studio(文件->新网站)创建了一个简单的网站,页面上没有任何控制。刚刚在 global.asax 中添加了上面的代码。我正在本地对此进行测试,因此删除了上述代码的!context.Request.IsLocal 条件。当我运行它时,控件只输入一次Application_BeginRequest,但网站加载了多次。它在网站第一次运行时首先加载。然后加载符号停止并再次开始加载而不输入Application_BeginRequest。这发生了多次。
    【解决方案4】:

    最简单的方法是在 IIS 中。

    在网站下选择“SSL 设置”并勾选“需要 SSL”复选框并点击应用。

    这种方法的好处是更安全(您的代码中不会出现允许非 SSL 请求的错误),并且实施起来更容易、更快捷。缺点是对 HTTP URL 的请求不会被自动重定向,但您没有说明这是一项要求。

    如果需要,也可以使用 IIS URL 重写模块来实现。

    【讨论】:

    • 我尝试实现 URL Rewrite 模块,但是在按照链接中提到的所有设置完成后,网站仍然在 http 上运行,而不是重定向到 https
    • @MicrosoftDN 在链接中?我没有发链接。您是否对错误的帖子发表评论(并投反对票)?
    猜你喜欢
    • 2021-11-25
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2015-07-18
    • 2015-09-07
    • 2012-08-07
    • 2020-01-27
    相关资源
    最近更新 更多