HTTP_02_HTTP協議(請求和響應)

1 請求和響應

請求從客戶端發出,最後服務器端響應該請求並返回。

1.1 請求報文

GET	/index.html HTTP/1.1
Host: example.com

第1行:請求方法(method)、請求URI(request-URI)、協議版本

第2行:請求首部字段(可選)

第3行:內容實體(可選)

1.2 響應報文

接收到請求的服務器,會將請求內容的處理結構以響應的形式返回。

HTTP/1.1 200 OK
Date: Wed, 19 Feb 2020 12:39:36 GMT
Content-Length: 379
Content-Type: text/html

<html>
...

第1行:協議版本、狀態碼、狀態碼的原因短語(reason-phrase)

第2-4行:響應首部字段(header field)

第5行:空格

第6-7行:主體(entity body)

HTTP是一種無狀態(stateless)協議。協議對於發送過的請求或響應都不做持久化處理。

HTTP通過URI定位互聯網上的資源。例如:GET http://baidu.com HTTP/1.1

1.3 HTTP方法(8種)

GET:獲取資源

🦈我想訪問你的某個資源!

GET方法用來請求訪問已被URI識別的資源。

如果請求的資源是文本,那就保持原樣返回;如果是CGI(Common Gateway Interface,通用網關接口)那樣的程序,則返回經過執行後的輸出結果。
p.s.大部分CGI程序用來處理來自表單的輸入信息,並在服務器產生相應的處理,或將相應的信息反饋給瀏覽器。CGI程序使網關具有交互功能。

POST:傳輸實體主體

🦈我想把這條信息告訴你!

PUT:傳輸文件

📂我要把這份文件傳給你!

HTTP/1.1的PUT方法無驗證機制,任何人都可以上傳文件,存在安全問題。一般需配合Web應用程序的驗證機制,或構架設計採用REST(REpresentation State Tranfer,表徵狀態轉移)標準的Web網站使用。

HEAD:獲得報文首部

同GET方法一樣,只是不返回報文主體部分。用來確定URI的有效性及資源更新的日期等。

DELETE:刪除文件

按請求URI刪除指定資源。

同PUT請求,不安全。

OPTIONS:詢問支持的方法

😲-你支持哪類方法?-支持GET和HEAD方法。

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

TRACE:追蹤路徑

讓Web服務器將之前的請求通信還會給客戶端。

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

要求在代理服務器通信時建立隧道,實現用隧道協議進行TCP通信。

主要使用SSL(Secure Sockets Layer,安全套接層)和TLS(Transport Layer Security,傳輸層安全)協議把通信內容加密後經網絡隧道傳輸。

格式:

CONNECT 代理服務器名:端口號 HTTP版本

2 持久連接節省通信量

每進行一次HTTP通訊就要斷開一次TCP連接。

若請求一個包含多張圖片的HTML頁面時,在發送請求訪問HTML頁面資源時,也會請求該HTML頁面裏包含的其他資源。每次請求都會造成無謂的TCP連接建立和斷開,增加通信量的開銷。

2.1 持久連接

持久連接(HTTP Persistent Connections,也稱HTTP keep-alive或HTTP connection reuse)。

特點:只要任意一端沒有明確提出斷開連接,則保持TCP連接狀態。

2.2 管線化

管線化(pipeline),不用等待響應亦可直接發送下一個請求。

這樣可以同時發送多條請求,而不需要一個接一個地等待響應了。

3 Cookie的狀態管理

Cookie技術通過在請求和響應報文中寫入Cookie信息來控制客戶端的狀態。

Cookie會根據從服務器端發送的響應報文內的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。當下次客戶端再往服務器發送請求時,客戶端會自動在請求報文中加入Cookie值發送過去。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章