1. 程式人生 > >HTTP與HTTPS

HTTP與HTTPS

安全 成功 response 引用 服務端 資源 soc targe 兩種

HTTP和HTTPS

HTTP協議(HyperText Transfer Protocol,超文本傳輸協議):是一種發布和接收 HTML頁面的方法。

  • HTTP的端口號為80

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)簡單講是HTTP的安全版,在HTTP下加入SSL層。

  • SSL(Secure Sockets Layer 安全套接層)主要用於Web的安全傳輸協議,在傳輸層對網絡連接進行加密,保障在Internet上數據傳輸的安全。  
  • HTTPS的端口號為443

HTTP工作原理

瀏覽器的主要功能是向服務器發出請求,在瀏覽器窗口中展示您選擇的網絡資源,HTTP是一套計算機通過網絡進行通信的規則。

HTTP的請求與響應

HTTP通信由兩部分組成: 客戶端請求消息 與 服務器響應消息

技術分享圖片

瀏覽器發送HTTP請求的過程:

1、當用戶在瀏覽器的地址欄中輸入一個URL並按回車鍵之後,瀏覽器會向HTTP服務器發送HTTP請求。HTTP請求主要分為“Get”和“Post”兩種方法。

2、當我們在瀏覽器輸入URL http://www.baidu.com 的時候,瀏覽器發送一個Request請求去獲取 http://www.baidu.com 的html文件,服務器把Response文件對象發送回給瀏覽器。

3、瀏覽器分析Response中的 HTML,發現其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 瀏覽器會自動再次發送Request去獲取圖片,CSS文件,或者JS文件

4、當所有的文件都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。

URL(Uniform / Universal Resource Locator的縮寫):

統一資源定位符,是用於完整地描述Internet上網頁和其他資源的地址的一種標識方法。

技術分享圖片

技術分享圖片

基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]

  • scheme:協議(例如:http, https, ftp)
  • host:服務器的IP地址或者域名
  • port#:服務器的端口(如果是走協議默認端口,缺省端口80)
  • path:訪問資源的路徑
  • query-string:參數,發送給http服務器的數據(get請求)
  • anchor:錨(跳轉到網頁的指定錨點位置)

例如:

  • ftp://192.168.0.116:8080/index

  • http://www.baidu.com

  • http://item.jd.com/11936238.html#product-detail

一、客戶端HTTP請求

URL只是標識資源的位置,而HTTP是用來提交和獲取資源。客戶端發送一個HTTP請求到服務器的請求消息,包括以下格式:

請求行請求頭部空行請求數據

四個部分組成,下圖給出了請求報文的一般格式。

技術分享圖片

一個典型的HTTP請求示例

技術分享圖片

請求方法(請求行中第一個寫的)

技術分享圖片

HTTP請求主要分為GetPost兩種方法

  • GET是從服務器上獲取數據,POST是向服務器傳送數據

  • GET請求參數顯示,都顯示在瀏覽器網址上,HTTP服務器根據該請求所包含URL中的參數來產生響應內容,即“Get”請求的參數是URL的一部分。 例如: http://www.baidu.com/s?wd=Chinese

  • POST請求參數在請求體當中,消息長度沒有限制而且以隱式的方式進行發送,通常用來向HTTP服務器提交量比較大的數據(比如請求中包含許多參數或者文件上傳操作等),請求的參數包含在“Content-Type”消息頭裏,指明該消息體的媒體類型和編碼,

常用的請求報頭

技術分享圖片

二、服務端HTTP響應

HTTP響應也由四個部分組成,分別是: 狀態行消息報頭空行響應正文

技術分享圖片

常用的響應報頭(了解)

理論上所有的響應頭信息都應該是回應請求頭的。但是服務端為了效率,安全,還有其他方面的考慮,會添加相對應的響應頭信息,從上圖可以看到:

技術分享圖片

響應狀態碼

響應狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值。

常見狀態碼:

  • 200 :請求成功。
  • 302 :請求重定向。
  • 304 :請求資源沒有改變,訪問本地緩存。
  • 404 :請求資源不存在。通常是用戶路徑編寫錯誤,也可能是服務器資源已刪除。
  • 500 :服務器內部錯誤。通常程序拋異常。

304狀態碼原因

技術分享圖片

服務器和客戶端的交互僅限於請求/響應過程,結束之後便斷開,在下一次請求時,服務器會認為新的客戶端。

為了維護他們之間的鏈接,讓服務器知道這是前一個用戶發送的請求,必須在一個地方保存客戶端的信息。

Cookie:通過在 客戶端 記錄的信息確定用戶的身份。

Session:通過在 服務器端 記錄的信息確定用戶的身份。

HTTP與HTTPS