我已经使用 asp.net 完成了一个项目,并准备上线。现在,由于某些原因,管理层决定使用 SSL,因此该站点应以 HTTPS 加载。
由于项目很大,在所有页面中检查 URL 并将其重定向到 HTTPS 会很痛苦,有没有一种简单的方法可以全局或在我的母版页中处理?
因此,即使网站 URL 是使用 HTTP 键入的,它也应该被重定向到 HTTPS 站点。我怎样才能做到这一点?
我对 IIS6 使用的一般方法是使用 IIS 中的站点属性来强制 SSL;这将为通过端口 80 访问该站点的任何人生成 403 错误,因此接下来您注册一个自定义 aspx 页面来处理 403 错误并将用户重定向到安全站点。
创建这个 403.4.aspx 页面。最简单的可能只是Response.Redirect("https://www.mydomain.com")
,但更好的是重定向到正确的页面并维护任何查询字符串。我目前没有开发环境来测试它,但我认为它会是这样的:
Response.Redirect( "https://" +
Request.ServerVariables("HTTP_HOST") +
Request.ServerVariables("URL") );
回到 IIS,设置此 403.4.aspx 页面上的属性,使其不需要安全通道。
现在,当有人试图访问您站点的任何页面时,IIS 会将他们发送到 403.4.aspx 页面,该页面会将他们重定向到安全站点。
如果您不想像 Nate 建议的那样根据 IIS 控制它,您可以简单地在您的global.asax
:
void Application_BeginRequest(Object sender, EventArgs e)
{
if (Request.Url.Scheme != "https")
Response.Redirect("https://yoursite.com");
}
可能不是最机智的解决方案,但它确实有效。