1. 什么是HTTP?
-
HTTP是hypertext transfer protocol(超文本傳輸協(xié)議)的簡(jiǎn)寫,它是TCP/IP協(xié)議的一個(gè)應(yīng)用層協(xié)議,用于定義WEB瀏覽器與WEB服務(wù)器之間交換數(shù)據(jù)的過(guò)程。
HTTP協(xié)議的版本:HTTP/1.0、HTTP/1.1
HTTP/1.0:客戶端與web服務(wù)器建立連接后,只能獲得一個(gè)web資源。
HTTP/1.1:客戶端與web服務(wù)器建立連接后,在一個(gè)連接上獲得多個(gè)web資源。
2. 完整的HTTP請(qǐng)求?
一個(gè)請(qǐng)求行
若干請(qǐng)求頭
-
以及實(shí)體內(nèi)容
常見(jiàn)請(qǐng)求頭(客戶端告知服務(wù)器)
| Header | 示例 | 解釋 |
|---|---|---|
| Accept | text/html、image/* | 客戶端支持的數(shù)據(jù)類型 |
| Accept-Charset | ISO-8859-1 | 客戶端采用的編碼 |
| Accept-Encoding | gzip、compress | 客戶端支持的數(shù)據(jù)壓縮格式 |
| Accept-Language | en-us、zh-cn | 客戶端的語(yǔ)言環(huán)境 |
| Host | www.baidu.com:80 | 客戶端想訪問(wèn)的主機(jī)名 |
| If-Modified-Since | Tue, 11 Jul 2000 18:23:51 GMT | 資源緩存的時(shí)間 |
| Referer | http://www.baidu.com | 客戶端從哪個(gè)資源來(lái)訪問(wèn)服務(wù)器的(防盜鏈) |
| User-Agent | Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) | 客戶端的軟件環(huán)境 |
| Cookie | - | - |
| Connection | close/Keep-Alive | 訪問(wèn)后是否關(guān)閉連接 |
3. 完整的HTTP響應(yīng)?
- 一個(gè)狀態(tài)行
- 若干消息頭
- 以及實(shí)體內(nèi)容

- 狀態(tài)碼
- 狀態(tài)碼用于表示服務(wù)器對(duì)請(qǐng)求的處理結(jié)果,它是一個(gè)三位的十進(jìn)制數(shù)。響應(yīng)狀態(tài)碼分為5類:
| 狀態(tài)碼 | 含義 |
|---|---|
| 100~199 | 表示成功接收請(qǐng)求,要求客戶端繼續(xù)提交下一次請(qǐng)求才能完成整個(gè)處理過(guò)程 |
| 200~299 | 表示成功接收請(qǐng)求并已完成整個(gè)處理過(guò)程,常用200 |
| 300~399 | 為完成請(qǐng)求,客戶需進(jìn)一步細(xì)化請(qǐng)求。例如,請(qǐng)求的資源已經(jīng)移動(dòng)一個(gè)新地址,常用302、307、304 |
| 400~499 | 客戶端的請(qǐng)求有錯(cuò)誤,常用404 |
| 500~599 | 服務(wù)器端出現(xiàn)錯(cuò)誤,常用 500 |
- 常見(jiàn)消息頭(服務(wù)器告知客戶端)
| Header | 示例 | 解釋 |
|---|---|---|
| Location | http://www.baidu.com | 配合302狀態(tài)碼使用,告訴客戶找誰(shuí)(重定向) |
| Server | apache tomcat | 告知服務(wù)器的類型 |
| Content-Encoding | gzip | 數(shù)據(jù)的壓縮格式 |
| Content-Length | 80 | 告知回送數(shù)據(jù)的長(zhǎng)度 |
| Content-Language | zh-cn | 數(shù)據(jù)的語(yǔ)言編碼 |
| Content-Type | text/html; charset=GB2312 | 數(shù)據(jù)類型與編碼 |
| Last-Modified | Tue, 11 Jul 2000 18:23:51 GMT | 告知客戶端當(dāng)前資源緩存時(shí)間 |
| Refresh | 1;url=http://www.baidu.com | 告知客戶端隔多長(zhǎng)時(shí)間刷新一次 |
| Content-Disposition | attachment; filename=aaa.zip | 告知客戶端以下載方式打開(kāi)數(shù)據(jù) |
| Transfer-Encoding | chunked | 告知瀏覽器的數(shù)據(jù)傳送格式 |
| Set-Cookie | SS=Q0=5Lb_nQ; path=/search | 設(shè)置cookie |
| ETag | W/"7777-1242234904000" | 緩存相關(guān)的頭 |
| Expires | -1 | 告知客戶端回送的數(shù)據(jù)緩存時(shí)間,-1或0是不緩存 |
| Cache-Control | no-cache | 告知客戶端不緩存 |
| Pragma | no-cache | 告知客戶端不緩存 |
4. 前端與后端交互過(guò)程(客戶端與服務(wù)器)

完整http請(qǐng)求與響應(yīng)頭信息、狀態(tài)碼 參考
http://tool.oschina.net/
http://tools.jb51.net/table/http_header
http 參考
