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);
}
Vous ne devriez pas encodez le nom du serveur. – SLaks
Pouvez-vous expliquer pourquoi? –