HTTP與HTTPS
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請求主要分為Get
和Post
兩種方法
-
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:
服務器和客戶端的交互僅限於請求/響應過程,結束之後便斷開,在下一次請求時,服務器會認為新的客戶端。
為了維護他們之間的鏈接,讓服務器知道這是前一個用戶發送的請求,必須在一個地方保存客戶端的信息。
Cookie:通過在 客戶端 記錄的信息確定用戶的身份。
Session:通過在 服務器端 記錄的信息確定用戶的身份。
HTTP與HTTPS