2009-08-17 2 views
2

Я хочу, чтобы перенаправить на страницу, и сила https:сила HTTPS в Response.Redirect

например

Response.Redirect("~/Login.aspx"); 

Я хочу, чтобы перенаправить на

https://myserver/Login.aspx 

как я могу заставить HTTPS?

ответ

3

Спасибо Silky за то, что начали меня.

Я закончил с

var url = String.Format("https://{0}{1}", 
     Request.ServerVariables["HTTP_HOST"] , 
     ResolveUrl("~/Login.aspx")); 

     Response.Redirect(url); 
+3

Обратите внимание, что вы можете получить Хост через: this.Request.Url.Host –

+0

, вероятно, лучше всего пухнуть для DNSSafeHost в этом случае –

0

Я хотел назвать этот метод из Page_Load любой страницы, где я хочу, чтобы заставить HTTPS. В частности, с любой страницы, где пользователь может ввести пароль, например, страницы входа, регистрации и сброса пароля.

protected void ForceHTTPS() 
{ 
    string serverName = Request.ServerVariables["SERVER_NAME"]; 
    string pagePath = Page.AppRelativeVirtualPath.Replace("~", ""); 
    string queryString = Request.Url.Query; 
    if (serverName != "localhost" && !Request.IsSecureConnection) 
    { 
     Response.Redirect("https://" + SECURE_DOMAIN + pagePath + queryString); 
    } 
} 

Причины я использую предопределенную константу для SECURE_DOMAIN, а не просто читать его из Request.ServerVariables [ «SERVER_NAME»] является то, что наш сертификат SSL работает только если есть «WWW.» в начале имени домена, поэтому я хочу, чтобы убедиться, что это доменное имя тоже в случае, если пользователь просмотрел сайт с использованием имени домена без www. или потенциально использовал другой псевдоним имени домена.

И я не делаю перенаправление, если имя сервера является «localhost», так что код также работает в моей среде разработки при запуске из Visual Studio.

Смежные вопросы