2010-10-07 66 views
4

我想知道什麼時候安全託管完成的朋友,我們需要一個唯一的IP地址將SSL證書關聯到它。另外,我在一篇教程中看到,當瀏覽器請求安全連接時,所有SSL進程都會啓動。但是,瀏覽器如何請求安全連接。我們不只是寫www.chase.com?然後我們的瀏覽器將http轉換爲https?背景中發生了什麼?我的瀏覽器如何將我的http請求轉換爲https?

+4

'http:// www.chase.com'重定向到'https:// www.chase.com'。我猜這是一個[永久重定向](http://en.wikipedia.org/wiki/URL_redirection)(HTTP狀態碼301)。重定向消息來自服務器,而不是瀏覽器。 – 2010-10-07 15:08:17

+0

嘿關閉選民。破碎的英語不是解決問題的理由。通讀答案和[vinayvasyani](http://stackoverflow.com/users/312965/vinayvasyani)評論可以更清楚地瞭解他在找什麼。 – 2010-10-07 16:11:35

回答

10

一步一步:

  1. 客戶端類型www.example.com在地址欄中
  2. 瀏覽器假定HTTP協議併發送GET呼叫www.example.com
  3. WWW .example.com的一個移動的狀態碼響應,並給出了新的位置:

    HTTP/1.1 301永久移動
    地點:HTTPS://www.example.com/

  4. 瀏覽器讀取並知道它必須啓動安全HTTP連接。

  5. ...等等。這是事情變得更加複雜的地方,因爲瀏覽器和服務器交換了多條消息,直到安全連接建立。

無論如何,如果您需要安裝SSL證書,您必須確保您的客戶端從HTTP重定向到HTTPS。這應該從服務器配置完成。

+0

好的答案[Alin Purcaru](http://stackoverflow.com/users/321468/alin-purcaru)...我試圖給出「編程」的答案,以防止這個問題被關閉......; ) – 2010-10-07 15:23:35

3

在您的編程代碼中,您使用301(服務器端)評估協議並重定向。 這不是在瀏覽器中完成的。

爲此,您可以在ASP.NET中Global.asax文件
我不知道其他編程語言(PHP,紅寶石等)。如果他們願意,其他人可以隨時留言和編輯我的答案,並提供更多的例子。

if(!Request.IsSecureConnection) 
{ 
    string redirectUrl = Request.Url.ToString().Replace("http:", "https:"); 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", redirectUrl); 
} 

我認爲你可以在默認情況下在Apache中使用的.htaccess做到這一點,但據我所知,如果你想這樣做在IIS中你需要運行的ASP腳本或包括在您的.net應用程序。我可能是錯的,但這是我在這個試驗中遇到的問題。

+0

你的意思是我應該首先檢查響應代碼,然後如果301的話我應該重定向。 – vinayvasyani 2010-10-07 15:27:00

+1

你可以用任何這樣的語言來做到這一點。您也可以在大多數網絡服務器的配置設置中執行此操作,而無需編程。 – 2010-10-07 15:27:16

+1

@vinayvasyani,301 **是**重定向。如果你發送301到瀏覽器,它會轉到另一個URI。看看RFC 2616. – 2010-10-07 15:28:19

相關問題