1、HTTP 報文
HTTP 報文大體可分爲報文首部和報文主體兩塊。二者由最初出現的 空行(CR+LF)來劃分。一般,並不必定要有報文主體。 瀏覽器
(一) 請求報文
由請求行(請求方法、請求 URI、協議版本),可選的請求首部字段(通用首部、請求首部、響應首部和實體首部)和內容實體構成。 緩存
(二) 響應報文
由協議版本、狀態碼(包含代表響應結果的狀態碼,緣由短語和 HTTP 版本)、可選的響應首部字段以及實體主體構成。安全
2、HTTP 狀態碼
(一) 狀態碼的類別
(二) 2XX 成功
2XX 的響應結果代表請求被正常處理了。bash
1. 200 OK
從客戶端發來的請求在服務器端被正常處理了。服務器
2. 204 No Content
服務器接收的請求已成功處理,但在返回的響應報文中不含實體內容。ui
3. 206 Partial Content
客戶端進行了範圍請求,而服務器成功執行了這部分的 GET 請求。響應報文中包含由 Content-Range 指定範圍的實體內容。加密
(三) 3XX 重定向
3XX 響應結果代表瀏覽器須要執行某些特殊的處理以正確處理請求。spa
1. 301 Moved Permanently
永久性重定向。請求的資源已被分配了新的 URI,之後應使用資源如今所指的 URI。3d
2. 302 Found
臨時性重定向。請求的資源已被分配了新的 URI,但願用戶(本次)能使用新的 URI 訪問。代理
3. 303 See Other
因爲請求對應的資源存在着另外一個 URI,應使用 GET 方法定向獲取請求的資源。
4. 304 Not Modified
客戶端發送附帶條件的請求時,服務器端容許請求訪問資源,但未知足條件的狀況。
(四) 4XX 客戶端錯誤
4XX 的響應結果代表客戶端是發生錯誤的緣由所在。
1. 400 Bad Request
請求報文中存在語法錯誤。
2. 401 Unauthorized
發送的請求須要有經過 HTTP 認證(BASIC 認證、 DIGEST 認證)的認證信息。
3. 403 Forbidden
狀態碼代表對請求資源的訪問被服務器拒絕了。
4. 404 Not Found
服務器上沒法找到請求的資源。
(五) 5XX 服務器錯誤
5XX 的響應結果代表服務器自己發生錯誤。
1. 500 Internal Server Error
該狀態碼代表服務器端在執行請求時發生了錯誤。
2. 503 Service Unavailable
該狀態碼代表服務器暫時處於超負載或正在進行停機維護,如今沒法處理請求。
3、HTTP 首部
HTTP 首部字段根據實際用途被分爲如下 4 種類型。
- 通用首部字段:請求報文和響應報文兩方都會使用的首部。
- 請求首部字段:從客戶端向服務器端發送請求報文時使用的首部。補充了請求的附加內容、客戶端信息、響應內容相關優先級等信息。
- 響應首部字段:從服務器端向客戶端返回響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容信息。
- 實體首部字段:針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等與實體有關的信息。
(一) 首部字段一覽
1. 通用首部字段
2. 請求首部字段
3. 響應首部字段
4. 實體首部字段
(二) 通用首部
1. Cache-Control
經過指定首部字段 Cache-Control 的指令,就能操做緩存的工做機制。
Cache-Control: private, max-age=0, no-cache
複製代碼
1.1 緩存請求指令
1.2 緩存響應指令
2. Cache-Control
Connection: 再也不轉發的首部字段名
複製代碼
Connection: close / keep-alive
複製代碼
3. Date
建立 HTTP 報文的日期和時間。
(三) 請求首部
(四) 響應首部
(五) 實體首部
(六) 爲 Cookie 服務的首部字段
1. Set-Cookie
2. Set-Cookie
Cookie: status=enable
複製代碼
4、HTTPS
(一) HTTP 的缺點
- 通訊使用明文(不加密),內容可能會被竊聽。
- 不驗證通訊方的身份,所以有可能遭遇假裝。
- 沒法證實報文的完整性,因此有可能已遭篡改。
(二) HTTPS = HTTP+ 加密 + 認證 + 完整性保護
- 經過和 SSL(Secure Socket Layer,安全套接層)或 TLS(Transport Layer Security,安全層傳輸協議)的組合使用, 加密 HTTP 的通訊內容。
- 雖然使用 HTTP 協議沒法肯定通訊方,但若是使用 SSL 則能夠。SSL 不只提供加密處理,並且還使用了一種被稱爲證書的手段,可用於肯定方。 證書由值得信任的第三方機構頒發,用以證實服務器和客戶端是 實際存在的。另外,僞造證書從技術角度來講是異常困難的一件 事。因此只要可以確認通訊方(服務器或客戶端)持有的證書,便可判斷通訊方的真實意圖。
- SSL 提供認證和加密處理及摘要功能。