http協(xié)議,狀態(tài)碼,方法了解一下?

一、http

http協(xié)議

1. http協(xié)議特性

1.1 無(wú)狀態(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é)商
通俗地來(lái)講就是不同情況不同對(duì)待,比如訪問(wèn)同一個(gè)URI地址,瀏覽器語(yǔ)言默認(rèn)為中文時(shí)我們?cè)L問(wèn)到的是中文頁(yè)面,默認(rèn)語(yǔ)言是英文時(shí)我們?cè)L問(wèn)到英文頁(yè)面。
內(nèi)容協(xié)商會(huì)以語(yǔ)言、字符集、編碼方式等作為基準(zhǔn)判斷響應(yīng)的資源。

2. http方法

http首部

通用首部字段


image.png
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ù)器中獲取最新的資源,這樣是為了防止拿到過(guò)期的資源。
服務(wù)端響應(yīng):此響應(yīng)緩存服務(wù)器可以把它保存下來(lái),但是每次緩存服務(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)過(guò)緩存服務(wù)器,而max-age=0需要經(jīng)過(guò)緩存服務(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)過(guò)期的資源無(wú)法作為響應(yīng)進(jìn)行返回。

1.1.7 max-stale

請(qǐng)求指令:Cache-Control:max-stale=60。
客戶端在這60秒內(nèi)請(qǐng)求的緩存即使過(guò)期了也可照常接收。

1.1.8 only-if-cached

請(qǐng)求指令:Cache-Control:only-if-cached。
客戶端請(qǐng)求緩存,有緩存則返回,無(wú)緩存返回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ā)首部字段


image.png

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)求首部字段


image.png

響應(yīng)首部字段


image.png

參考:圖解http(03)-http首部

3.http方法

Http1.1中的請(qǐng)求方法有這些
3.1 GET
請(qǐng)求訪問(wèn)已被URI識(shí)別的資源,請(qǐng)求不需要實(shí)體主體。

3.2 POST
傳輸實(shí)體主體。

3.3 PUT
傳輸文件,本身無(wú)驗(yàn)證機(jī)制,存在安全問(wèn)題。

3.4 DELETE
刪除文件,與PUT相反的方法,也無(wú)驗(yàn)證機(jī)制。

3.5 HEAD
HEAD方法和GET方法一樣用于獲取資源,只是HEAD方法的請(qǐng)求不返回報(bào)文的主體部分。

3.6 OPTIONS
用來(lái)查詢針對(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)碼

image.png

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)求,但返回的信息可能來(lái)自另一個(gè)來(lái)源
  • 204,請(qǐng)求處理成功了,但沒(méi)有資源可返回;
  • 206,對(duì)資源的一部分進(jìn)行請(qǐng)求成功返回;

3XX·重定向

  • 301,永久移動(dòng)
  • 302,臨時(shí)移動(dòng)
  • 304,服務(wù)器內(nèi)容沒(méi)有修改,返回此響應(yīng)時(shí),不會(huì)返回網(wǎng)頁(yè)的內(nèi)容,瀏覽器使用緩存
  • 305,使用代理
  • 307,臨時(shí)性重定向

4XX·客戶端錯(cuò)誤/請(qǐng)求錯(cuò)誤

  • 400,請(qǐng)求報(bào)文中存在語(yǔ)法錯(cuò)誤;
  • 401,用戶認(rèn)證失??;
  • 403,不允許訪問(wèn)資源;
  • 404,找不到資源。

5XX·服務(wù)器錯(cuò)誤

  • 500,服務(wù)器內(nèi)部錯(cuò)誤 服務(wù)器內(nèi)部處理異常;
  • 503,服務(wù)器不可用 服務(wù)器暫時(shí)處于超負(fù)荷或者正在進(jìn)行停機(jī)維護(hù),無(wú)法處理請(qǐng)求。
  • 504,網(wǎng)關(guān)超時(shí)
  • 505,http版本不支受支持 服務(wù)器不支持請(qǐng)求中所用的http協(xié)議版本

HTTP狀態(tài)碼詳解與選用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容