HTTP 全稱是 Hyper Text Transfer Protocol 即:超文本傳輸協(xié)議
HTTP 是應(yīng)用層協(xié)議
HTTP 是一個基于請求/響應(yīng)模式的逻澳、無狀態(tài)的協(xié)議 (Request/Response)
一個完整的URL
URL (Uniform Resource Locator) 用于描述一個網(wǎng)絡(luò)上的資源
基本格式如下 :
schema://host[:port#]/path/…/[?query_string][#anchor]
字段 | 解釋 |
---|---|
schema | 指定低層使用的協(xié)議(例如:http, https, ftp) |
host | HTTP服務(wù)器的IP地址或者域名 |
port# | HTTP服務(wù)器的默認端口是80, 這種情況下端口號可以省略。如果使用了別的端口, 必須指明, 例如 http://www.reibang.com:8080/ |
path | 訪問資源的路徑 |
query_string | 發(fā)送給http服務(wù)器的數(shù)據(jù) |
anchor | 錨 |
一個URL :
HTTP的Request/Response
Request的結(jié)構(gòu)
Request的結(jié)構(gòu)如下圖所示 :
在MAC上我使用
Charles
來抓包.
Headers中常出現(xiàn)的字段
Accept
瀏覽器端可以接受的媒體類型 (通配符 * 代表任意類型)
例如: Accept: / 代表瀏覽器可以處理所有類型 (通常情況下都是這個)Content-Type
內(nèi)容類型?
例如: Content-Type: application/x-www-form-urlencodedAccept-Encoding
瀏覽器申明自己接收的編碼方法, 通常指定壓縮方法, 是否支持壓縮, 支持什么壓縮方法(gzip滓侍,deflate)
注意:這不是指字符編碼
例如: Accept-Encoding: gzipUser-Agent
告訴HTTP服務(wù)器, 客戶端使用的操作系統(tǒng)和瀏覽器的名稱和版本-
Connection
例如: Connection: keep-alive 當(dāng)一個網(wǎng)頁打開完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會關(guān)閉财饥,如果客戶端再次訪問這個服務(wù)器上的網(wǎng)頁案铺,會繼續(xù)使用這一條已經(jīng)建立的連接例如: Connection: close 代表一個Request完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接會關(guān)閉闸迷, 當(dāng)客戶端再次發(fā)送Request,需要重新建立TCP連接俘枫。
Content-Length
發(fā)送給HTTP服務(wù)器數(shù)據(jù)的長度
例如: Content-Length: 38Host (發(fā)送請求時腥沽,該Header是必需的)
請求報頭域主要用于指定被請求資源的Internet主機和端口號,它通常從HTTP URL中提取出來的Cookie
最重要的header, 將cookie的值發(fā)送給HTTP 服務(wù)器
Response的結(jié)構(gòu)
有下圖可以參考 :