2010-09-29 4 views
0

J'utilise ce code simple à rediriger http https sur ma page de destination de facturation:ASP.NET HTTP vers HTTPS redirect avec préfixe www

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

j'ai besoin de vérifier aussi et ajouter www à l'url si ce n'est pas déjà dans l'url. Que dois-je ajouter à ce code pour accomplir ceci?

+1

Vous ne devriez pas encodez le nom du serveur. – SLaks

+0

Pouvez-vous expliquer pourquoi? –

Répondre

1

Comme ceci:

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

Votre exemple ne prend pas en compte le cas. Et si le nom de serveur était WWW.domain.com, le résultat serait www.WWW.domain.com. – jessegavin

+0

Whoa! C'était simple! Cela a bien fonctionné, merci beaucoup. –

+0

@jessegavin à première vue, je pensais que ce serait le cas, mais il ne duplique pas le www. –

0

Le code suivant suppose que si le nom du serveur ne démarre pas avec un "www." alors le remède est de préfixer quel que soit le nom de serveur actuel avec "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); 
} 

Personnellement, je n'aime pas cette méthode de faire les choses. Je crée généralement un paramètre nommé quelque chose comme SecureDomain et ensuite utiliser la logique pour vérifier si le ServerName actuel correspond à cela. Quelque chose comme ça.

// 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); 
} 
+0

Salut Jesse, Merci beaucoup pour votre aide. Je suis confiant que votre méthode fonctionnerait bien, mais l'autre réponse était très simple à insérer à l'intérieur de ce que j'avais déjà. - Jesse (2) –

Questions connexes