2009-08-17 44 views

回答

3

謝謝柔滑讓我開始。

我已經結束了與

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

     Response.Redirect(url); 
+3

請注意,您可以通過以下方式獲取主機:this.Request.Url.Host – 2009-08-17 11:25:27

+0

在這種情況下可能最適合DNSSafeHost – 2009-08-17 11:29:33

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中運行時也可以在我的開發環境中使用。