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