HTTP 协议状态码-4XX
4XX 的状态码指的是请求出错了,而且很有可能是客户端侧的异常。客户端侧的异常很多,有时候情况也比较复杂,下面定义的状态码有时候也只能反应一个大概情况,而不一定确切的。
400 Bad Request
作为客户端异常的首个状态码,400
代表的意思很泛(错误的请求),一般指的是 4XX
其它状态码没有更合适的情况下就用 400
,毕竟客户端出错类型很多,无法准确把情况都定义好。
401 Unauthorized
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic; realm="Secured area"
客户端重新提交认证
GET / HTTP/1.1
Authorization: Basic j3VsbCBkb25lOnlvdhBmb3Vu89B0aGUgZWFzdGVyIoUnZwo=
402 Payment required
403 Forbidden
访问被禁止了,401
确切指没有认证,403
范围就更多了,可能是登陆了但是没有这个资源的权限,可能是访问的源 ip
不在相应的白名单中,等所有不被允许的情况。
404 Not Found
405 Method Not Allowed
HTTP/1.1 405 Method Not Allowed
Content-Type: text/html
Allow: GET, HEAD, OPTIONS, PUT
406 Not Acceptable
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,表示客户必须先经过代理服务器的授权。
代理服务器返回需要认证的状态
HTTP/1.1 407 Proxy Authentication required
Proxy-Authenticate: Basic; realm="Secured area"
客户端发起代理认证
GET / HTTP/1.1
Proxy-Authorization: Basic d2VsbCBkb25lOllvdSBmb3VuZCB0aGUgc2Vjb25kIGVhc3RlciBlZ2cK
原站需要认证,代理服务器也需要认证的情况
GET / HTTP/1.1
Proxy-Authorization: Basic ZWFzdGVyIGVnZzpudW1iZXIgdGhyZWUK
Authorization: Bearer c2VuZCBtZSBhIHR3ZWV0IG9yIHNvbWV0agluZwo
408 Request Timeout
客户端太慢了,超出了服务端允许的等待时间,服务端会返回 408
并断开连接。常见的有可能网速太慢了,一个请求发送太长时间还没发完。
HTTP/1.1 408 Request Timeout
Connection: close
Content-Type: text/plain
Too slow! Try again
409 Conflict
客户端请求本身没问题,但是服务端对应的资源跟客户端要执行的操作有冲突。比如客户端要修改 版本1的某个资源,但是服务端着个资源只有在 版本2 才存在。
410 Gone
告知客户端某个资源不存在了,跟 404
很像,只是 410
更加明确该资源永久性改变了,如果客户端在许可的条件下,应该把所有指向着个地址的连接全部删除。404
就比较笼统,当前请求的资源不在了,不清楚后面会不会有。
411 Length required
服务器拒绝在没有定义 Content-Length 头的情况下接受请求。
412 Precondition Failed
413 Request Entity Too Large
服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。
414 Request-URI Too Long
请求的 URI
长度超过了服务器能够解释的长度,这种情况比较可能的是 GET
请求的 URI
携带的参数太多太大了。
415 Unsupported Media Type
416 Requested Range Not Satisfiable
服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed
在请求头 Expect 中指定的预期内容无法被服务器满足。
418 I’m a teapot
IETF 在愚人节的时候发布了一个 笑话的 RFC 提案,内容是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示“我是一个茶壶”。后来官方想要去除该编号,竟然遭到了阻止,甚至不少浏览器都支持这个协议。是技术圈中一个错误而美好的典故。
421Misdirected Request
请求被指向到无法生成响应的服务器(比如由于连接重复使用)
422 Unprocessable Entity
请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)
423 Locked
当前资源被锁定。(RFC 4918 WebDAV)
424 Failed Dependency
由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV)
425 Too Early
服务器不愿意冒风险来处理该请求,原因是处理该请求可能会被“重放”,从而造成潜在的重放攻击。
426 Upgrade required
客户端应当切换到TLS/1.0。
449 Retry With
代表请求应当在执行完适当的操作后进行重试。
451 Unavailable For Legal Reasons
该请求因法律原因不可用。