【问题标题】:Redirecting the whole site to HTTPS in ASP.net application在 ASP.net 应用程序中将整个站点重定向到 HTTPS
【发布时间】:2013-02-28 20:45:44
【问题描述】:

我已经使用 asp.net 完成了一个项目,并准备上线。现在,由于某些原因,管理层决定使用 SSL,因此网站应该以 HTTPS 加载。

由于项目很大,在所有页面中检查 URL 并将其重定向到 HTTPS 会很痛苦,有没有一种简单的方法可以全局或在我的母版页中处理?

因此,即使网站 URL 是使用 HTTP 键入的,也应该将其重定向到 HTTPS 站点。我怎样才能做到这一点?

【问题讨论】:

  • 您使用的是什么版本的 IIS?
  • @NateHekman 这是第 6 版

标签: asp.net .net https iis-6


【解决方案1】:

我对 IIS6 使用的一般方法是使用 IIS 中的站点属性来强制 SSL;这将为通过端口 80 访问站点的任何人生成 403 错误,因此接下来您注册一个自定义 aspx 页面来处理 403 错误并将用户重定向到安全站点。

  1. 转到站点的属性(在 IIS 中),目录安全,单击通过安全通信编辑,并要求安全通道 (SSL)。现在,这会强制整个站点使用 SSL。如果您现在访问该站点,您应该会收到 403;4 错误。
  2. 转到“自定义错误”选项卡,选择 403;4 错误,并将其设置为您网站上的 URL(例如 /403.4.aspx)
  3. 创建这个 403.4.aspx 页面。最简单的可能只是Response.Redirect("https://www.mydomain.com"),但更好的是重定向到正确的页面并维护任何查询字符串。我目前没有开发环境来测试它,但我认为它会是这样的:

    Response.Redirect( "https://" + Request.ServerVariables("HTTP_HOST") + Request.ServerVariables("URL") );

  4. 返回 IIS,设置此 403.4.aspx 页面上的属性,使其不需要安全通道。

现在,当有人试图访问您网站的任何页面时,IIS 会将他们发送到 403.4.aspx 页面,该页面会将他们重定向到安全网站。

【讨论】:

    【解决方案2】:

    如果您不想像 Nate 建议的那样根据 IIS 来控制它,您可以简单地在 global.asax 中进行重定向:

    void Application_BeginRequest(Object sender, EventArgs e)
    {
        if (Request.Url.Scheme != "https")
            Response.Redirect("https://yoursite.com");
    }
    

    可能不是最机智的解决方案,但确实可以。

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2014-10-02
      相关资源
      最近更新 更多