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