2013-02-26 20 views
0

我一直在嘗試做http重定向到https幾天,任何幫助將不勝感激!我在共享主機環境中託管我的網站,我不允許在IIS中更改任何內容。使用https c#強制頁面,出現錯誤此網頁有重定向循環

下面是在C#中的登錄頁面

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request.Url.ToString().IndexOf("http://") != -1) 
    { 
     string redirectUrl = Request.Url.ToString().Replace("http://", "https://"); 
     //Response.Write(redirectUrl); 
     Response.Redirect(redirectUrl); 
    }  
} 

我得到了錯誤的代碼是「此網頁有重定向循環」。我也嘗試在web.config文件中執行重定向,但出現相同的錯誤。無論如何強制使用https的網頁?

+0

如果你是負載平衡器後面的服務類型我相信你需要確保'X-Forwarded-For'頭部通過。 – asawyer 2013-02-26 13:32:54

+0

嗨asawyer,任何示例如何我可以通過X-Forwarded-For頭? – user2055026 2013-02-26 14:00:08

+0

您無法觸摸IIS,但主機環境如何。它是一個負載平衡器嗎?你沒有提供任何細節。問題在於瀏覽器使用HTTPS與負載均衡服務器通信,但負載均衡器在HTTP端口80內部與IIS進行通信。您可能完全沒問題,但應用程序無法知道或執行此操作。解決的辦法是配置平衡軟件,用'x-forwarded-proto'(not-for,sorry)標頭傳遞原始請求的http/https值,然後在你的應用程序中用'Request.Headers'採集。 – asawyer 2013-02-26 14:04:05

回答

-1

你可以直接問,如果你是在HTTPS通過這樣

if(Request.IsSecureConnection) 

我使用它來重定向到我登錄的HTTPS:

if(!IsPostBack){ 
    if(!Request.IsSecureConnection) 
     Response.Redirect("https://" & Request.Url.Host & "/Login.aspx") 

...... 
...... 
.... 
... 
} 
+0

嘿路易斯,我剛剛嘗試過我們的代碼,但仍然給了我同樣的錯誤。 – user2055026 2013-02-26 13:55:38

+0

這個網頁有一個重定向循環 – user2055026 2013-02-26 13:56:15

+0

這對我來說很好,它只會重定向,如果它不是一個安全的連接,我不明白爲什麼你可以得到這個錯誤.. – 2013-02-26 14:07:39

相關問題