HTTP協議報文格式
阿新 • • 發佈:2018-12-24
一、HTTP訊息結構
HTTP是基於客戶端/服務端(C/S)的架構模型,HTTP使用統一資源識別符號(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。一旦建立連線後,資料訊息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴充套件(MIME)[RFC2045]來傳送。
二、客戶端請求報文格式
客戶端傳送一個HTTP請求到伺服器的請求訊息包括以下格式:請求行(request line)、請求頭部(header)、空行、請求資料
【1】請求行
由請求方法, URL, 協議版本 三部分組成,之間由空格分隔。eg:GET /hello.text HTTP/1.1
【2】請求頭部
請求頭部為請求報文添加了一些附加資訊,用來說明伺服器要使用的附加資訊,由“名/值”對組成。
欄位 | 解釋 |
---|---|
Accept | 指定客戶端能夠接收的內容型別 |
Accept-Charset | 瀏覽器可以接受的字元編碼集。 |
Accept-Encoding | 指定瀏覽器可以支援的web伺服器返回內容壓縮編碼型別。 |
Accept-Language | 瀏覽器可接受的語言 |
Accept-Ranges | 可以請求網頁實體的一個或者多個子範圍欄位 |
Authorization | HTTP授權的授權證書 |
Cache-Control | 指定請求和響應遵循的快取機制 |
Connection | 表示是否需要持久連線。(HTTP 1.1預設進行持久連線) |
Cookie | HTTP請求傳送時,會把儲存在該請求域名下的所有cookie值一起傳送給web伺服器。 |
Content-Length | 請求的內容長度 |
Content-Type | 請求的與實體對應的MIME資訊 |
Date | 請求傳送的日期和時間 |
Expect | 請求的特定的伺服器行為 |
From | 發出請求的使用者的Email |
Host | 指定請求的伺服器的域名和埠號 |
If-Match | 只有請求內容與實體相匹配才有效 |
If-Modified-Since | 如果請求的部分在指定時間之後被修改則請求成功,未被修改則返回304程式碼 |
If-None-Match | 如果內容未改變返回304程式碼,引數為伺服器先前傳送的Etag,與伺服器迴應的Etag比較判斷是否改變 |
If-Range | 如果實體未改變,伺服器傳送客戶端丟失的部分,否則傳送整個實體。引數也為Etag |
If-Unmodified-Since | 只在實體在指定時間之後未被修改才請求成功 |
Max-Forwards | 限制資訊通過代理和閘道器傳送的時間 |
Pragma | 用來包含實現特定的指令 |
Proxy-Authorization | 連線到代理的授權證書 |
Range | 只請求實體的一部分,指定範圍 |
Referer | 先前網頁的地址,當前請求網頁緊隨其後,即來路 |
TE | 客戶端願意接受的傳輸編碼,並通知伺服器接受接受尾加頭資訊 |
Upgrade | 向伺服器指定某種傳輸協議以便伺服器進行轉換(如果支援) |
User-Agent | User-Agent的內容包含發出請求的使用者資訊 |
Via | 通知中間閘道器或代理伺服器地址,通訊協議 |
Warning | 關於訊息實體的警告資訊 |
【3】空行
請求頭部後面的空行是必須的
【4】請求正文
請求資料也叫主體,可以新增任意的其他資料
三、伺服器響應報文格式
伺服器接收並處理客戶端發過來的請求後會返回一個HTTP的響應訊息。HTTP響應也由四個部分組成,分別是:狀態行、訊息報頭、空行、響應正文。
【1】狀態行
由HTTP協議版本號, 狀態碼, 狀態訊息 三部分組成,之間由空格分隔 。eg:HTTP/1.1 200 OK
【2】訊息報頭
用來說明客戶端要使用的一些附加資訊
欄位 | 解釋 |
Cache-Control | 告訴瀏覽器或者其他客戶,什麼環境可以安全地快取文件 |
Connection | 當client和server通訊時對於長連結如何進行處理 |
Content-Encoding | 資料在傳輸過程中所使用的壓縮編碼方式 |
Content-Type | 資料的型別 |
Date | 資料從伺服器傳送的時間 |
Expires | 應該在什麼時候認為文件已經過期,從而不再快取它? |
Server | 伺服器名字。Servlet一般不設定這個值,而是由Web伺服器自己設定 |
Set-Cookie | 設定和頁面關聯的cookie |
Transfer-Encoding | 資料傳輸的方式 |
【3】空行
訊息報文後面的空行是必須的
【4】響應正文
伺服器返回給客戶端的文字資訊