HTTP協(xié)議(超文本傳輸協(xié)議)
簡(jiǎn)介
1.http協(xié)議是用于web服務(wù)器傳輸超文本到瀏覽器的傳輸協(xié)議
2.http協(xié)議是基于TCP/IP通信協(xié)議傳遞數(shù)據(jù)和建立連接
工作原理
1.http協(xié)議工作于C/S架構(gòu),瀏覽器通過(guò)url向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器收到請(qǐng)求后,會(huì)返回響應(yīng)到客戶端
2.http默認(rèn)端口80,可以進(jìn)行更改
3.http是無(wú)連接協(xié)議,即每次連接只處理一個(gè)請(qǐng)求,服務(wù)器處理完請(qǐng)求且收到應(yīng)答后,斷開連接,可以減少傳輸時(shí)間
4.http是無(wú)狀態(tài)協(xié)議,處理事務(wù)時(shí)不記憶,所以如果后續(xù)事務(wù)需要前面信息,需要重傳。
5.http流程:

消息結(jié)構(gòu)
1.http的客戶端 (web瀏覽器)向服務(wù)端發(fā)送請(qǐng)求
2.http的服務(wù)端 (web服務(wù)器)向客戶端返回響應(yīng)
3.http是通過(guò)URI進(jìn)行傳輸數(shù)據(jù)和建立連接
4.請(qǐng)求的結(jié)構(gòu)包括
請(qǐng)求行
請(qǐng)求方法字段(GET/POST ) url字段(例:/data/info.html) HTTP協(xié)議版本(http1.0/http1.1)
請(qǐng)求頭部 包含許多參數(shù),比如說(shuō)(常用):
Accept 瀏覽器允許的MIME類型
Referer 客戶端聲明從哪個(gè)資源訪問(wèn)服務(wù)器
User-Agent 包含發(fā)送請(qǐng)求的用戶信息,瀏覽器類型
Content-Type 內(nèi)容類型
Host 要訪問(wèn)的主機(jī)名
Connection 判斷處理完請(qǐng)求是否繼續(xù)連接
Cookie 客戶機(jī)通過(guò)這個(gè)頭可以向服務(wù)器帶數(shù)據(jù)
空行 告訴服務(wù)器頭部到此結(jié)束
請(qǐng)求數(shù)據(jù) 如果是GET,無(wú)數(shù)據(jù) 如果是POST,放入數(shù)據(jù) 數(shù)據(jù)間用&相連
如圖:

5.響應(yīng)的結(jié)構(gòu)包括
響應(yīng)行 包括http協(xié)議版本(同上) http狀態(tài)碼(成功是200,其余后面會(huì)寫) 描述(例ok表示響應(yīng)成功)
響應(yīng)頭 同請(qǐng)求頭部
響應(yīng)數(shù)據(jù) 返回對(duì)應(yīng)數(shù)據(jù),例:請(qǐng)求是html頁(yè)面,返回就是html文檔
如圖:

請(qǐng)求方法
| 方法名 | 用途 |
|---|---|
| GET | 獲取指定的頁(yè)面信息,返回實(shí)體 |
| HEAD | 與GET類似,但主要獲取報(bào)頭 |
| POST | 向指定資源發(fā)送數(shù)據(jù)進(jìn)行處理請(qǐng)求,請(qǐng)求包含在請(qǐng)求體中,POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。 |
| DELETE | 請(qǐng)求服務(wù)器刪掉指定頁(yè)面 |
| PUT | 向服務(wù)器發(fā)送數(shù)據(jù)并修改數(shù)據(jù)指定的內(nèi)容 |
| OPTIONS | 允許查看服務(wù)器性能 |
| TRACE | 回顯數(shù)據(jù),用于測(cè)試 |
狀態(tài)碼
a.分類:
| 狀態(tài)碼 | 用途 |
|---|---|
| 1** | 繼續(xù)操作信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作 |
| 2** | 成功,操作被收到并處理 |
| 3** | 重定向,需要進(jìn)一步操作才能完成請(qǐng)求 |
| 4** | 客戶端錯(cuò)誤,可能是語(yǔ)法錯(cuò)誤或發(fā)送請(qǐng)求錯(cuò)誤 |
| 5** | 服務(wù)端錯(cuò)誤,服務(wù)器處理請(qǐng)求錯(cuò)誤 |
b.具體分類:
1系
| 101 | 服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作 |
|---|---|
| 102 | 更換高版本http協(xié)議(http1.0轉(zhuǎn)1.1) |
2系
| 200 | 成功,服務(wù)器收到請(qǐng)求并處理 |
|---|---|
| 201 | 成功請(qǐng)求并創(chuàng)建了新的資源 |
| 202 | 請(qǐng)求成功。但返回的meta信息是一個(gè)副本 |
| 203 | 服務(wù)器已成功處理了請(qǐng)求,但返回的信息可能來(lái)自另一來(lái)源。 |
| 204 | 服務(wù)器成功處理了請(qǐng)求,但沒有返回任何內(nèi)容 |
| 205 | 服務(wù)器成功處理了請(qǐng)求,但沒有返回任何內(nèi)容。與 204 響應(yīng)不同,此響應(yīng)要求請(qǐng)求者重置文檔視圖 |
| 206 | 服務(wù)器處理部分GET請(qǐng)求 |
3系
| 300 | 請(qǐng)求資源包括多個(gè)位置,服務(wù)器提供操作列表供請(qǐng)求者選擇 |
|---|---|
| 301 | 永久重定向 資源被永久移動(dòng)到新的uri,包括返回信息和請(qǐng)求使用新的uri |
| 302 | 臨時(shí)重定向 資源臨時(shí)移動(dòng)到新的uri,訪問(wèn)時(shí)仍然為舊uri |
| 303 | 查看其它地址。與301類似。使用GET和POST請(qǐng)求查看 |
| 304 | 請(qǐng)求的資源未修改,不返回內(nèi)容 |
| 305 | 使用代理訪問(wèn)請(qǐng)求網(wǎng)頁(yè) |
| 307 | 臨時(shí)重定向。與302類似。使用GET請(qǐng)求重定向 |
4系
| 400 | 語(yǔ)法錯(cuò)誤 |
|---|---|
| 401 | 需要身份驗(yàn)證 |
| 403 | 資源不可用 |
| 404 | 找不到資源 |
| 405 | 請(qǐng)求方法對(duì)資源不可用 |
| 406 | 資源已找到,但MIME類型與Accept請(qǐng)求頭指定的不符 |
| 407 | 需要代理服務(wù)器授權(quán) |
| 408 | 在服務(wù)器許可的等待時(shí)間內(nèi),客戶一直沒有發(fā)出任何請(qǐng)求??蛻艨梢栽谝院笾貜?fù)同一請(qǐng)求。 |
| 409 | 請(qǐng)求與資源狀態(tài)沖突 |
| 410 | 服務(wù)器無(wú)法重定向 |
| 411 | 請(qǐng)求中無(wú)Content-Length頭 |
| 412 | 文檔太大,服務(wù)器需要Retry-enter頭 |
| 414 | URI太長(zhǎng) |
5系
| 500 | 服務(wù)器出狀況 |
|---|---|
| 501 | 服務(wù)器不支持請(qǐng)求中的某功能 |
| 502 | 服務(wù)器返回非法應(yīng)答 |
| 503 | 服務(wù)器未應(yīng)答 |
| 504 | 能及時(shí)地從遠(yuǎn)程服務(wù)器獲得應(yīng)答 |
| 505 | 服務(wù)器不支持http版本 |