1. 程式人生 > >HTTP圖解讀書筆記(第二章 簡單的HTTP協議)

HTTP圖解讀書筆記(第二章 簡單的HTTP協議)

一、HTTP協議用於客戶端和服務端的通訊

二、通過請求和響應的交換完成通訊

請求報文由請求方法、請求URL、協議版本、可選的請求首部欄位和內容實體組成

響應報文放由協議版本、狀態碼、用於解釋狀態碼原因的短語、可選的響應首部欄位和實體主體組成

三、HTTP協議是不儲存狀態的協議

使用 HTTP 協議,每當有新的請求傳送時,就會有對應的新響應產生。協議本身並不保留之前一切的請求或響應報文的資訊。

無狀態導致一些問題,比如:不能儲存登入狀態。為了實現期望的儲存狀態的功能,引入了cookie

四、請求URI定位資源

HTTP 協議使用 URI 定位網際網路上的資源。正是因為 URI 的特定功能,在網際網路上任意位置的資源都能訪問到。

五、告知伺服器意圖的HTTP方法

GET:獲取資源

 POST:傳輸實體主體

雖然用get方法也可以傳輸實體主體,但一般不用get方法傳輸。post的主要目的不是獲取響應的主體內容

PUT:傳輸檔案

PUT 方法用來傳輸檔案。就像 FTP 協議的檔案上傳一樣,要求在請求報文的主體中包含檔案內容,然後儲存到請求 URI 指定的位置。但是,鑑於 HTTP/1.1 的 PUT 方法自身不帶驗證機制,任何人都可以上傳檔案 , 存在安全性問題,因此一般的 Web 網站不使用該方法。

HEAD:獲得報文首部

HEAD 方法和 GET 方法一樣,只是不返回報文主體部分。用於確認URI 的有效性及資源更新的日期時間等。

DELETE:刪除檔案

DELETE 方法用來刪除檔案,是與 PUT 相反的方法。DELETE 方法按請求 URI 刪除指定的資源。但是,HTTP/1.1 的 DELETE 方法本身和 PUT 方法一樣不帶驗證機制,所以一般的 Web 網站也不使用 DELETE 方法。

OPTIONS:詢問支援的方法

用來查詢針對請求 URI 指定的資源支援的方法

TRACE:追蹤路徑

 CONNECT:要求用隧道協議連線代理

CONNECT 方法要求在與代理伺服器通訊時建立隧道,實現用隧道協議進行 TCP 通訊。主要使用 SSL(Secure Sockets Layer,安全套接層)和 TLS(Transport Layer Security,傳輸層安全)協議把通訊內容加密後經網路隧道傳輸 

六、持久連線節省通訊量

HTTP初始版本中每次沒進行一次HTTP通訊就要斷開一次TCP連線,但是如果每次請求一個HTML頁面時還要請求頁面中的圖片等資源,這樣就要多次的TCP連線和斷開,增加通訊的開銷。為了解決這個問題,引入持久連線(HTTP keep-alive)。

永續性連線:一次TCP連線可以進行多次的請求和響應

管線化:持久連線使管線化成為可能。以前傳送請求後需要收到響應後才能發起下一個請求,管線化可以不等收到響應就繼續傳送下一個請求。

七、使用cookie的狀態管理

Cookie 會根據從伺服器端傳送的響應報文內的一個叫做 Set-Cookie 的首部欄位資訊,通知客戶端儲存 Cookie。當下次客戶端再往該伺服器傳送請求時,客戶端會自動在請求報文中加入 Cookie 值後傳送出去。

伺服器端發現客戶端傳送過來的 Cookie 後,會去檢查究竟是從哪一個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。