使用www前缀的ASP.NET HTTP到HTTPS重定向

时间:2010-09-29 16:45:05

标签: c# asp.net http redirect https

我使用这个简单的代码将http重定向到我的结算目标网页上的https:

if (!Request.IsSecureConnection)
{
    // send user to SSL 
    string serverName =HttpUtility.UrlEncode(Request.ServerVariables["SERVER_NAME"]);        
    string filePath = Request.FilePath;
    Response.Redirect("https://" + serverName + filePath);
}

我还需要它来检查并添加www到网址,如果它不在网址中。我需要在此代码中添加什么才能完成此任务?

2 个答案:

答案 0 :(得分:1)

像这样:

if (!serverName.StartsWith("www."))
    serverName = "www." + serverName;

答案 1 :(得分:0)

以下代码假定服务器名称不以“www”开头。然后补救措施是在“www。”之前预先填写当前服务器名称。

if (!Request.IsSecureConnection)
{
    // send user to SSL 
    string serverName = Request.ServerVariables["SERVER_NAME"];
    if (!serverName.ToLowerCaseInvariant().StartsWith("www.")) {
       serverName = string.Format("www.{0}", serverName);
    }
    string filePath = Request.FilePath;
    Response.Redirect("https://" + serverName + filePath);
}

就个人而言,我不喜欢这种做事方法。我通常创建一个名为SecureDomain的设置,然后使用逻辑来验证当前的ServerName是否与之匹配。这样的事情。

// Suppose the value of GlobalAppSettings.SecureDomain
// is something like www.securestore.com

if (!Request.IsSecureConnection)
{
    // send user to SSL 
    string serverName = Request.ServerVariables["SERVER_NAME"];
    if (string.Compare(serverName, GlobalAppSettings.SecureDomain, true) != 0) {
       serverName = GlobalAppSettings.SecureDomain;
    }
    string filePath = Request.FilePath;
    Response.Redirect("https://" + serverName + filePath);
}