HTTP和HTTPS
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議):是一種發佈和接收 HTML頁面的方法。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請求的過程:
一、當用戶在瀏覽器的地址欄中輸入一個URL並按回車鍵以後,瀏覽器會向HTTP服務器發送HTTP請求。HTTP請求主要分爲「Get」和「Post」兩種方法。服務器
二、當咱們在瀏覽器輸入URL http://www.baidu.com 的時候,瀏覽器發送一個Request請求去獲取 http://www.baidu.com 的html文件,服務器把Response文件對象發送回給瀏覽器。網絡
三、瀏覽器分析Response中的 HTML,發現其中引用了不少其餘文件,好比Images文件,CSS文件,JS文件。 瀏覽器會自動再次發送Request去獲取圖片,CSS文件,或者JS文件。編碼
四、當全部的文件都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。加密
URL(Uniform / Universal Resource Locator的縮寫):
統一資源定位符,是用於完整地描述Internet上網頁和其餘資源的地址的一種標識方法。url
基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
spa
- scheme:協議(例如:http, https, ftp)
- host:服務器的IP地址或者域名
- port#:服務器的端口(若是是走協議默認端口,缺省端口80)
- path:訪問資源的路徑
- query-string:參數,發送給http服務器的數據(get請求)
- anchor:錨(跳轉到網頁的指定錨點位置)
例如:
1、客戶端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」消息頭裏,指明該消息體的媒體類型和編碼,
經常使用的請求報頭
2、服務端HTTP響應
HTTP響應也由四個部分組成,分別是: 狀態行
、消息報頭
、空行
、響應正文
經常使用的響應報頭(瞭解)
理論上全部的響應頭信息都應該是迴應請求頭的。可是服務端爲了效率,安全,還有其餘方面的考慮,會添加相對應的響應頭信息,從上圖能夠看到:
響應狀態碼
響應狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值。
常見狀態碼:
- 200 :請求成功。
- 302 :請求重定向。
- 304 :請求資源沒有改變,訪問本地緩存。
- 404 :請求資源不存在。一般是用戶路徑編寫錯誤,也多是服務器資源已刪除。
- 500 :服務器內部錯誤。一般程序拋異常。
304狀態碼緣由
Cookie 和 Session:
服務器和客戶端的交互僅限於請求/響應過程,結束以後便斷開,在下一次請求時,服務器會認爲新的客戶端。
爲了維護他們之間的連接,讓服務器知道這是前一個用戶發送的請求,必須在一個地方保存客戶端的信息。
Cookie:經過在 客戶端 記錄的信息肯定用戶的身份。
Session:經過在 服務器端 記錄的信息肯定用戶的身份。