0

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

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

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

4

2 回答 2

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 页面,该页面会将他们重定向到安全站点。

于 2013-03-13T03:44:24.970 回答
0

如果您不想像 Nate 建议的那样根据 IIS 控制它,您可以简单地在您的global.asax

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

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

于 2013-03-13T04:44:55.563 回答