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