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