Следующий код предполагает, что если имя сервера не начинается с "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
, а затем использую логику, чтобы проверить, соответствует ли текущее имя сервера этому. Как то так.
// 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);
}