HTTP 協(xié)議狀態(tài)碼-4XX
4XX 的狀態(tài)碼指的是請(qǐng)求出錯(cuò)了,而且很有可能是客戶端側(cè)的異常??蛻舳藗?cè)的異常很多,有時(shí)候情況也比較復(fù)雜,下面定義的狀態(tài)碼有時(shí)候也只能反應(yīng)一個(gè)大概情況,而不一定確切的。
400 Bad Request
作為客戶端異常的首個(gè)狀態(tài)碼,400
代表的意思很泛(錯(cuò)誤的請(qǐng)求),一般指的是 4XX
其它狀態(tài)碼沒(méi)有更合適的情況下就用 400
,畢竟客戶端出錯(cuò)類型很多,無(wú)法準(zhǔn)確把情況都定義好。
401 Unauthorized
請(qǐng)求沒(méi)有權(quán)限,通常返回的響應(yīng)頭部會(huì)包含 WWW-Authenticate 的頭,瀏覽器遇到這種響應(yīng)一般會(huì)彈出一個(gè)對(duì)話框,讓用戶重新提交用戶名和密碼進(jìn)行認(rèn)證。
服務(wù)端響應(yīng)
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic; realm="Secured area"
客戶端重新提交認(rèn)證
GET / HTTP/1.1
Authorization: Basic j3VsbCBkb25lOnlvdhBmb3Vu89B0aGUgZWFzdGVyIoUnZwo=
402 Payment Required
這是一個(gè)預(yù)留的狀態(tài),最初想要實(shí)現(xiàn)的是,一些商業(yè)網(wǎng)站,用戶付費(fèi)完后可以重復(fù)的發(fā)送請(qǐng)求,為支付而預(yù)留的。
403 Forbidden
訪問(wèn)被禁止了,401
確切指沒(méi)有認(rèn)證,403
范圍就更多了,可能是登陸了但是沒(méi)有這個(gè)資源的權(quán)限,可能是訪問(wèn)的源 ip
不在相應(yīng)的白名單中,等所有不被允許的情況。
404 Not Found
很常見(jiàn)的一種錯(cuò)誤碼,可能是你的地址構(gòu)造錯(cuò)了,也可能是后臺(tái)服務(wù)器的資源確實(shí)沒(méi)了。
405 Method Not Allowed
請(qǐng)求方法有 POST
GET
這類,客戶端訪問(wèn)的方法跟服務(wù)端能夠提供的不一樣,當(dāng)請(qǐng)求狀態(tài)是 405
的時(shí)候,響應(yīng)信息頭會(huì)帶上 Allow
字段,告訴客戶端被允許的請(qǐng)求方法是哪些。
HTTP/1.1 405 Method Not Allowed
Content-Type: text/html
Allow: GET, HEAD, OPTIONS, PUT
406 Not Acceptable
指定的資源已經(jīng)找到,但它的媒體類型和客戶在Accpet頭中所指定的不兼容,客戶端瀏覽器不接受所請(qǐng)求頁(yè)面的媒體類型。
客戶端請(qǐng)求一個(gè) Json 格式內(nèi)容
GET /foo HTTP/1.1
Accept: application/json
Accept-Language: fr-CA; q=1, fr; q=0.8
服務(wù)端不支持 Json
HTTP/1.1 406 Not Acceptable
Server: curveball/0.4
Content-Type: text/html
407 Proxy Authentication Required
要求進(jìn)行代理身份驗(yàn)證,類似于401,表示客戶必須先經(jīng)過(guò)代理服務(wù)器的授權(quán)。
代理服務(wù)器返回需要認(rèn)證的狀態(tài)
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic; realm="Secured area"
客戶端發(fā)起代理認(rèn)證
GET / HTTP/1.1
Proxy-Authorization: Basic d2VsbCBkb25lOllvdSBmb3VuZCB0aGUgc2Vjb25kIGVhc3RlciBlZ2cK
原站需要認(rèn)證,代理服務(wù)器也需要認(rèn)證的情況
GET / HTTP/1.1
Proxy-Authorization: Basic ZWFzdGVyIGVnZzpudW1iZXIgdGhyZWUK
Authorization: Bearer c2VuZCBtZSBhIHR3ZWV0IG9yIHNvbWV0aGluZwo
408 Request Timeout
客戶端太慢了,超出了服務(wù)端允許的等待時(shí)間,服務(wù)端會(huì)返回 408
并斷開(kāi)連接。常見(jiàn)的有可能網(wǎng)速太慢了,一個(gè)請(qǐng)求發(fā)送太長(zhǎng)時(shí)間還沒(méi)發(fā)完。
HTTP/1.1 408 Request Timeout
Connection: close
Content-Type: text/plain
Too slow! Try again
409 Conflict
客戶端請(qǐng)求本身沒(méi)問(wèn)題,但是服務(wù)端對(duì)應(yīng)的資源跟客戶端要執(zhí)行的操作有沖突。比如客戶端要修改 版本1的某個(gè)資源,但是服務(wù)端著個(gè)資源只有在 版本2 才存在。
410 Gone
告知客戶端某個(gè)資源不存在了,跟 404
很像,只是 410
更加明確該資源永久性改變了,如果客戶端在許可的條件下,應(yīng)該把所有指向著個(gè)地址的連接全部刪除。404
就比較籠統(tǒng),當(dāng)前請(qǐng)求的資源不在了,不清楚后面會(huì)不會(huì)有。
410
響應(yīng)的目的主要是幫助網(wǎng)站管理員維護(hù)網(wǎng)站,通知用戶該資源已經(jīng)不再可用,并且服務(wù)器擁有者希望所有指向這個(gè)資源的遠(yuǎn)端連接也被刪除。
411 Length Required
服務(wù)器拒絕在沒(méi)有定義 Content-Length 頭的情況下接受請(qǐng)求。
412 Precondition Failed
請(qǐng)求頭部帶有一些先前條件,滿足了才可以執(zhí)行,不滿足就返回 412
。常見(jiàn)的就是要求某個(gè)資源過(guò)期了才能修改,不過(guò)期的時(shí)候執(zhí)行 PUT
修改就報(bào)錯(cuò)。
413 Request Entity Too Large
服務(wù)器拒絕處理當(dāng)前請(qǐng)求,因?yàn)樵撜?qǐng)求提交的實(shí)體數(shù)據(jù)大小超過(guò)了服務(wù)器愿意或者能夠處理的范圍。
414 Request-URI Too Long
請(qǐng)求的 URI
長(zhǎng)度超過(guò)了服務(wù)器能夠解釋的長(zhǎng)度,這種情況比較可能的是 GET
請(qǐng)求的 URI
攜帶的參數(shù)太多太大了。
415 Unsupported Media Type
請(qǐng)求實(shí)體的媒體類型不被服務(wù)器或者資源支持。例如,客戶端想要返回一個(gè) application/json
內(nèi)容,服務(wù)端只能提供 text/html
類型的資源。
416 Requested Range Not Satisfiable
服務(wù)器不能滿足客戶在請(qǐng)求中指定的Range頭。
417 Expectation Failed
在請(qǐng)求頭 Expect 中指定的預(yù)期內(nèi)容無(wú)法被服務(wù)器滿足。
418 I’m a teapot
IETF 在愚人節(jié)的時(shí)候發(fā)布了一個(gè) 笑話的 RFC 提案,內(nèi)容是:當(dāng)客戶端給一個(gè)茶壺發(fā)送泡咖啡的請(qǐng)求時(shí),茶壺就返回一個(gè)418錯(cuò)誤狀態(tài)碼,表示“我是一個(gè)茶壺”。后來(lái)官方想要去除該編號(hào),竟然遭到了阻止,甚至不少瀏覽器都支持這個(gè)協(xié)議。是技術(shù)圈中一個(gè)錯(cuò)誤而美好的典故。
421Misdirected Request
請(qǐng)求被指向到無(wú)法生成響應(yīng)的服務(wù)器(比如由于連接重復(fù)使用)
422 Unprocessable Entity
請(qǐng)求格式正確,但是由于含有語(yǔ)義錯(cuò)誤,無(wú)法響應(yīng)。(RFC 4918 WebDAV)
423 Locked
當(dāng)前資源被鎖定。(RFC 4918 WebDAV)
424 Failed Dependency
由于之前的某個(gè)請(qǐng)求發(fā)生的錯(cuò)誤,導(dǎo)致當(dāng)前請(qǐng)求失敗,例如 PROPPATCH。(RFC 4918 WebDAV)
425 Too Early
服務(wù)器不愿意冒風(fēng)險(xiǎn)來(lái)處理該請(qǐng)求,原因是處理該請(qǐng)求可能會(huì)被“重放”,從而造成潛在的重放攻擊。
426 Upgrade Required
客戶端應(yīng)當(dāng)切換到TLS/1.0。
449 Retry With
代表請(qǐng)求應(yīng)當(dāng)在執(zhí)行完適當(dāng)?shù)牟僮骱筮M(jìn)行重試。
451 Unavailable For Legal Reasons
該請(qǐng)求因法律原因不可用。