一、http
http協(xié)議
1. http協(xié)議特性
1.1 無狀態(tài)
http是不保存狀態(tài)的協(xié)議敲才,不保存之前的請(qǐng)求和響應(yīng)裹纳,這樣設(shè)計(jì)是為了確保協(xié)議的可伸縮性,可以快速處理大量事務(wù)
為了驗(yàn)證身份紧武,引入cookie
1.2 持久鏈接(http1.1版本默認(rèn))
在http的早起版本中剃氧,由于當(dāng)時(shí)網(wǎng)絡(luò)不這么發(fā)達(dá),網(wǎng)絡(luò)請(qǐng)求密度相對(duì)比較低阻星,所以當(dāng)時(shí)每做一次網(wǎng)絡(luò)請(qǐng)求時(shí)朋鞍,必須連接(三次握手)-請(qǐng)求與相應(yīng)-斷開連接(四次揮手),現(xiàn)在網(wǎng)絡(luò)請(qǐng)求密度非常大迫横,必須滿足一次連接多次請(qǐng)求番舆,所以在http1.1版本中默認(rèn)所有的連接都是持久連接。
1.3 管線化
管線化即并發(fā)矾踱,持久連接使并發(fā)成為可能恨狈。
1.4 內(nèi)容協(xié)商
通俗地來講就是不同情況不同對(duì)待,比如訪問同一個(gè)URI地址呛讲,瀏覽器語言默認(rèn)為中文時(shí)我們?cè)L問到的是中文頁面禾怠,默認(rèn)語言是英文時(shí)我們?cè)L問到英文頁面。
內(nèi)容協(xié)商會(huì)以語言贝搁、字符集吗氏、編碼方式等作為基準(zhǔn)判斷響應(yīng)的資源。
2. http方法
http首部
通用首部字段
1.1 Cache-Control 緩存管理
和緩存相關(guān)的指令雷逆,可以多個(gè)參數(shù)用’,’分隔:
Cache-Control:private, max-age=0, no-cache
1.1.1 public
響應(yīng)指令:Cache-Control:public弦讽。
服務(wù)器返回給某個(gè)客戶端的緩存,也可被其它任意客戶端利用膀哲,這個(gè)緩存是公共的往产。
1.1.2 private
響應(yīng)指令:Cache-Control:private。
服務(wù)器返回給某個(gè)客戶端的緩存某宪,即使其它客戶端需要這樣的數(shù)據(jù)仿村,這個(gè)緩存也不會(huì)給其它客戶端用,這個(gè)緩存是私有的兴喂。
1.1.3 no-cache
請(qǐng)求和響應(yīng)指令:Cache-Control:no-cache蔼囊。
客戶端請(qǐng)求:不管緩存是何種情況焚志,我必須從源服務(wù)器中獲取最新的資源,這樣是為了防止拿到過期的資源畏鼓。
服務(wù)端響應(yīng):此響應(yīng)緩存服務(wù)器可以把它保存下來酱酬,但是每次緩存服務(wù)器要將此響應(yīng)返回給客戶端之前都必須找源服務(wù)器確認(rèn)一下數(shù)據(jù)。
1.1.4 no-store
請(qǐng)求和響應(yīng)指令:Cache-Control:no-store滴肿。
對(duì)于客戶端和服務(wù)端而言岳悟,該指定規(guī)定緩存不能在任何位置存儲(chǔ)任何東西,我們可以將其看做是不緩存泼差。
1.1.5 max-age
請(qǐng)求和響應(yīng)指令:Cache-Control:max-age=60贵少。
客戶端請(qǐng)求:在第一次請(qǐng)求后的60秒內(nèi),再請(qǐng)求可以直接將緩存給我堆缘。等于0時(shí)滔灶,緩存服務(wù)器需要將請(qǐng)求轉(zhuǎn)發(fā)給源服務(wù)器。
max-age=0和no-cache的區(qū)別:no-cache強(qiáng)制直接向源服務(wù)器請(qǐng)求不經(jīng)過緩存服務(wù)器吼肥,而max-age=0需要經(jīng)過緩存服務(wù)器录平。
服務(wù)端響應(yīng):在第一次返回緩存之后的60秒內(nèi)如果緩存服務(wù)器需要返回此緩存時(shí),不需要向源服務(wù)器進(jìn)行確認(rèn)就可以直接發(fā)送缀皱。
1.1.6 min-fresh
請(qǐng)求指令:Cache-Control:min-fresh=60斗这。
在這60秒以內(nèi)過期的資源無法作為響應(yīng)進(jìn)行返回。
1.1.7 max-stale
請(qǐng)求指令:Cache-Control:max-stale=60啤斗。
客戶端在這60秒內(nèi)請(qǐng)求的緩存即使過期了也可照常接收表箭。
1.1.8 only-if-cached
請(qǐng)求指令:Cache-Control:only-if-cached。
客戶端請(qǐng)求緩存钮莲,有緩存則返回免钻,無緩存返回504狀態(tài)碼。
1.1.9 must-revalidate
響應(yīng)指令:Cache-Control:must-revalidate崔拥。
代理會(huì)向源服務(wù)器再次驗(yàn)證即將返回的響應(yīng)緩存是否仍然有效极舔。
1.2 connection
主要有兩個(gè)作用:控制代理不再轉(zhuǎn)發(fā)首部字段,持久鏈接管理
1.2.1 控制代理不再轉(zhuǎn)發(fā)首部字段
1.2.2 持久連接管理
我們知道在http1.1版本中所有連接默認(rèn)是持久連接链瓦,如果我們向手動(dòng)地?cái)嚅_連接可以這樣:Connection: close拆魏。
為了兼容其它版本的http,我們這樣設(shè)置:Connection: Keep-Alive
1.3 Date
表示創(chuàng)建報(bào)文的日期和時(shí)間
請(qǐng)求首部字段
響應(yīng)首部字段
3.http方法
Http1.1中的請(qǐng)求方法有這些
3.1 GET
請(qǐng)求訪問已被URI識(shí)別的資源慈俯,請(qǐng)求不需要實(shí)體主體渤刃。
3.2 POST
傳輸實(shí)體主體。
3.3 PUT
傳輸文件肥卡,本身無驗(yàn)證機(jī)制溪掀,存在安全問題事镣。
3.4 DELETE
刪除文件步鉴,與PUT相反的方法揪胃,也無驗(yàn)證機(jī)制。
3.5 HEAD
HEAD方法和GET方法一樣用于獲取資源氛琢,只是HEAD方法的請(qǐng)求不返回報(bào)文的主體部分喊递。
3.6 OPTIONS
用來查詢針對(duì)請(qǐng)求URI指定的資源支持的方法(GET?POST?等)。
3.7 TRACE
讓web服務(wù)器端將之前的請(qǐng)求通信返回給客戶端的方法阳似,用于追蹤路徑骚勘,請(qǐng)求在各個(gè)代理服務(wù)器之間中轉(zhuǎn)最終到達(dá)目標(biāo)服務(wù)器,在中轉(zhuǎn)時(shí)請(qǐng)求可能會(huì)被篡改撮奏。
3.8 CONNECT
要求用隧道協(xié)議連接代理俏讹,主要使用SSL和TLS協(xié)議把通信內(nèi)容加密后經(jīng)網(wǎng)絡(luò)隧道傳輸。
4.http狀態(tài)碼
2XX·成功--------------------表示成功處理了請(qǐng)求的狀態(tài)碼
- 200畜吊,客戶端請(qǐng)求在服務(wù)器端被正常處理了泽疆;
- 201,請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源
- 201玲献,服務(wù)器已經(jīng)接收殉疼,但是尚未處理
- 203,服務(wù)器已經(jīng)成功處理了請(qǐng)求捌年,但返回的信息可能來自另一個(gè)來源
- 204瓢娜,請(qǐng)求處理成功了,但沒有資源可返回礼预;
- 206眠砾,對(duì)資源的一部分進(jìn)行請(qǐng)求成功返回;
3XX·重定向
- 301逆瑞,永久移動(dòng)
- 302荠藤,臨時(shí)移動(dòng)
- 304,服務(wù)器內(nèi)容沒有修改获高,返回此響應(yīng)時(shí)哈肖,不會(huì)返回網(wǎng)頁的內(nèi)容,瀏覽器使用緩存
- 305念秧,使用代理
- 307淤井,臨時(shí)性重定向
4XX·客戶端錯(cuò)誤/請(qǐng)求錯(cuò)誤
- 400,請(qǐng)求報(bào)文中存在語法錯(cuò)誤摊趾;
- 401币狠,用戶認(rèn)證失敗砾层;
- 403漩绵,不允許訪問資源;
- 404肛炮,找不到資源止吐。
5XX·服務(wù)器錯(cuò)誤
- 500宝踪,服務(wù)器內(nèi)部錯(cuò)誤 服務(wù)器內(nèi)部處理異常;
- 503碍扔,服務(wù)器不可用 服務(wù)器暫時(shí)處于超負(fù)荷或者正在進(jìn)行停機(jī)維護(hù)瘩燥,無法處理請(qǐng)求。
- 504不同,網(wǎng)關(guān)超時(shí)
- 505厉膀,http版本不支受支持 服務(wù)器不支持請(qǐng)求中所用的http協(xié)議版本