1. 程式人生 > >HTTP協議報文格式

HTTP協議報文格式

一、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】響應正文

         伺服器返回給客戶端的文字資訊