我使用asp.net完成了一个项目,并准备上线了。现在管理层决定出于某些原因使用SSL,因此网站应该以HTTPS加载。
由于项目非常庞大,在所有页面中检查URL并将其重定向到HTTPS会很痛苦,有没有一种简单的方法可以全局或在我的母版页中处理它?
因此,即使使用HTTP键入网站URL,也应将其重定向到HTTPS站点。我怎样才能做到这一点?
答案 0 :(得分:1)
我与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页面,该页面会将它们重定向到安全网站。
答案 1 :(得分:0)
如果您不想像Nate建议的那样按照每个IIS控制它,您只需在global.asax
中执行重定向:
void Application_BeginRequest(Object sender, EventArgs e)
{
if (Request.Url.Scheme != "https")
Response.Redirect("https://yoursite.com");
}
可能不是最机智的解决方案,但它可以胜任。