HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。web
用於http協議交互的信息被稱爲http報文。請求端(客戶端)的http報文叫作請求報文,響應端(服務器)的叫作響應報文。瀏覽器
請求報文由請求方法,請求URI,協議版本,首部字段(可選),內容實體(可選)構成緩存
響應報文由協議版本,狀態碼,緣由短語,首部字段(可選),實體主體構成服務器
在每份報文中,請求URI,協議版本,狀態碼,緣由短語,首部字段屬於報文首部,而後空一行,剩下的是報文主體。網絡
首部字段有4種:請求首部字段,響應首部字段,通用首部字段,實體首部字段,通用首部和實體首部爲請求報文和響應報文都有的,而請求首部只有請求報文有,響應首部只有響應報文有。app
報文是http通訊中的基本單位,由8位組字節流組成,經過http通訊傳輸。編碼
實體做爲請求和響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成spa
通常狀況下,報文主體等於實體主體。只有當傳輸中進行編碼操做時,實體主體的內容發生變化,纔會和報文主體不一致。代理
http1.0和http1.1支持的方法orm
方法 |
說明 |
支持http協議的版本 |
GET |
獲取已被URI識別的資源 |
1.0,1.1 |
POST |
傳輸實體主體 |
1.0,1.1 |
PUT |
傳輸文件(不帶驗證機制) |
1.0,1.1 |
HEAD |
得到報文首部 |
1.0,1.1 |
DELETE |
刪除文件(不帶驗證機制) |
1.0,1.1 |
OPTIONS |
詢問支持方法 |
1.1 |
TRACE |
追蹤路徑 |
1.1 |
CONNECT |
要求用隧道協議連接代理 |
1.1 |
LINK |
創建和資源之間的聯繫 |
1.0 |
UNLINK |
斷開連接關係 |
1.0 |
http狀態碼
狀態碼 |
類別 |
緣由短語 |
1XX |
Informational(信息性狀態碼) |
接收的請求正在處理 |
2XX |
Success(成功狀態碼) |
請求正常處理完畢 |
3XX |
Redirection(重定向狀態碼) |
須要進行附加操做以完成請求 |
4XX |
Client Error(客戶端錯誤狀態碼) |
服務器沒法處理請求 |
5XX |
Server Error(服務器錯誤狀態碼) |
服務器處理請求出錯 |
14中經常使用的狀態碼
200 OK |
表示客戶端發來的請求在服務器端被正常處理了 |
204 No Content |
表示服務器接收的請求已處理成功,但返回的響應報文不含實體主體部分 |
206 Partial Content |
表示客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求 |
301 Moved Permaently |
永久性重定向,表示請求的資源已被分配了新的URI,之後應使用該資源如今所指的URI |
302 Found |
臨時性重定向,表示請求的資源已被分配了新的URI,但願用戶本次能使用新的URI訪問 |
303 See Other |
表示因爲請求對應的資源存在着另外一個URI,應使用GET方法定向獲取請求的資源 |
304 Not Modified |
表示客戶端發送附帶條件請求時,服務器端容許請求訪問資源,但因發生請求爲知足條件的狀況後,直接返回304 Not Modified(服務器端資源爲改變,可直接使用客戶端未過時的主體部分) |
307 Temporary Redirect |
臨時重定向,和302含義相同 |
400 Bad Request |
表示請求報文中存在語法錯誤。服務器端沒法識別請求 |
401 Unauthorized |
表示發送的請求須要經過http認證的認證信息。若以前已進行過一次請求,則表示用戶認證失敗 |
403 Forbidden |
表示請求資源的訪問被服務器拒絕了。沒有權限訪問 |
404 Not Found |
表示服務器沒法找到請求的資源,即沒有這個資源 |
500 Internal Server Error |
表示服務器端在執行請求時發生了錯誤,也有多是web應用存在bug或某些臨時性故障 |
503 Service Unavailable |
表示服務器暫時處於超負載或正在進行停機維護,如今沒法處理請求 |
http通用首部字段
通用首部字段名 |
說明 |
Cache-Control |
控制緩存的行爲 |
Connection |
管理逐跳首部和持久鏈接 |
Date |
建立報文的日期時間 |
Pragma |
報文指令 |
Trailer |
報文末端的首部一覽 |
Transfer-Encoding |
指定報文主體的傳輸編碼方式 |
Upgrade |
升級爲其餘協議,檢測是否可以使用更高版本協議通訊 |
Via |
代理服務器的相關信息,追蹤客戶端和服務器之間的請求和響應報文的傳輸路徑 |
Warning |
錯誤通知,一般會告知用戶一些與緩存相關的問題的警告 |
http1.1 警告碼(Warning共七種)
警告碼 |
警告內容 |
說明 |
110 |
Response is stale(響應已過時) |
代理返回已過時的資源 |
111 |
Revalidation failed(再驗證失敗) |
代理沒法驗證資源有效性時失敗(服務器沒法到達等緣由) |
112 |
Disconnection operation(斷開連接操做) |
代理與互聯網連接被故意切斷 |
113 |
Heuristic expiration(試探性過時) |
響應的使用期超過24小時(有效緩存的設定時間大於24小時的狀況下) |
199 |
Miscellaneous warning(雜項警告) |
任意警告的內容 |
214 |
Tansformation applied(使用了轉換) |
代理對內容編碼或媒體類型等執行了某些處理時 |
299 |
Miscellaneous persistent warning(持久雜項警告) |
任意的警告內容 |
http請求首部字段
請求首部字段 |
說明 |
Accept |
用戶代理可處理的媒體類型及媒體類型的相對優先級 |
Accept-Charset |
優先的字符集,用戶代理支持的字符集及相對優先順序 |
Accept-Encoding |
優先的內容編碼,用戶代理支持的內容編碼及優先級順序 |
Accept-Language |
優先的語言,用戶代理能處理的天然語言及天然語言集的相對優先級 |
Authorization |
Web認證信息 |
Expect |
期待服務器的特定行爲 |
From |
用戶的電子郵件地址 |
Host |
請求資源所在的服務器(主機名和端口號) |
If-Match |
和實體標記(ETag)比較,若相同則執行請求,不然返回412狀態碼 |
If-Modefied-Since |
若If-Modefied-Since字段值早於資源的更新時間,則但願處理該請求,不然返回304狀態碼 |
If-None-Match |
比較實體標記(與If-Match想反) |
If-Range |
資源未更新時發送實體Byte的範圍請求。若If-Range字段值和請求資源的ETag值或時間相一致時,則做爲範圍請求處理,不然返回全體資源 |
If-Unmodified-Since |
比較資源的更新時間(與If-Modified-Since想反) |
Max-Forwards |
最大傳輸逐跳數(以十進制形式指定可通過的服務器的最大數目) |
Proxy-Authorization |
代理服務器要求客戶端的認證信息 |
Range |
實體的字節範圍請求 |
Referer |
對請求中URI的原始獲取方(請求的原始資源的URI) |
TE |
告知服務器客戶端能處理響應的傳輸編碼方式及相對優先級 |
User-Agent |
http客戶端程序的信息 |
http響應首部字段
響應首部字段 |
說明 |
Accept-Ranges |
是否接受字節範圍請求 |
Age |
資源建立通過的時間,單位爲秒 |
ETag |
資源的匹配信息,能告知客戶端實體標識 |
Location |
令客戶端重定向至指定URI |
Proxy-Authenticate |
代理服務器對客戶端的認證信息 |
Retry-After |
對再次發起請求的時機要求 |
Server |
http服務器的安裝信息 |
Vary |
代理服務器緩存的管理信息 |
WWW-Authenicate |
服務器對客戶端的認證信息 |
http實體首部字段
實體首部字段 |
說明 |
Allow |
資源可支持的http方法 |
Content-Encoding |
實體適用的編碼方式 |
Content-Language |
實體的天然語言 |
Content-Length |
實體的大小(單位爲字節) |
Content-Location |
替代對應資源的URI |
Content-MD5 |
實體主體的報文摘要 |
Content-Range |
實體主體的位置範圍 |
Content-Type |
實體主體的媒體類型 |
Expires |
實體主體過時的日期時間 |
Last-Modified |
資源最後修改的日期時間 |