常见 Http 响应码
404 应该是我们最常见到的 http 响应码之一。除了 404 外,还有 503、500 等。当然如果抬杠的话,最常见的应该是 200。(😊)
200 是成功返回的响应,正常情况下的返回,说是最常见也不为过,但对于一般用户是不可见的。
除了上面这些,还有其他哪些呢?是否有人可以记全?一般我们也不会去记它,遇到时再百度或者谷歌就可以了。但多了解一些总是好的。
为了方便记忆,我们来看看 http 响应码是怎么分类的。
http 响应码可以分为两大类:正确的响应码、错误的响应码。
正确的响应码包括:1XX、2XX、3XX.(如 200)
错误的响应码包括:4XX、5XX.(如 404)
一、正确的响应码
1、1xx:请求已接收到,需要进一步处理才能完成,HTTP1.0 不支持
100 Continue:上传大文件前使用(由客户端发起请求中携带 Expect:100-continue 头部触发)
101 Switch Protocols:协议升级使用(由客户端发起请求中携带 Upgrade:头部触发,如升级 websocket 或 http/2.0)
102 Processing:WebDev 请求可能包含许多涉及文件操作的子请求,需要很长时间才能完成请求。此响应码表示服务器已经收到并正在处理请求,但无响应可用。这样可以防止客户端超时,并假设请求丢失。
2、2xx:成功处理请求
200 OK:成功并返回响应
201 Created:有新资源在服务器端被成功创建。
202 Accepted:服务器接收并开始处理请求,但请求未处理完成。
203 Non-Authoritative Information:当代理服务器修改了 origin server 的原始响应包体时(例如更换了 HTML 中的元素值),代理服务器可以通过修改 200 为 203 的方式告知客户端这一事实,方便客户端为这一行为作出相应的处理。203 响应可以被缓存。
204 No Content:成功执行了请求且不携带响应包体,并暗示客户端无需更新当前的页面视图。
205 Reset Content:成功执行了请求且不携带响应包体,同时指明客户端需要更新当前页面视图。
206 Partial Content:使用 range 协议时返回部分响应内容时的响应码。
207 Multi-Status:WEBDAV 协议中以 XML 返回多个资源的状态。
208 Already Reported:为避免相同集合下资源在 207 响应码下重复上报,使用 208 可以使用父集合的响应码。
3、3xx:重定向使用 Location 指向的资源或者缓存中的资源。
300 Multiple Choices:资源有多种表述,通过 300 返回给客户端后由其自行选择访问哪一种表述。因缺少明确的细节,很少使用。
301 Moved Permanently:资源永久性的重定向到另一个 URI 中。
302 Found:资源临时的重定向到另一个 URI 中。
303 See Other:重定向到其他资源,常用于 POST/PUT 等方法当响应中。
304 Not Modified:当客户端拥有可能过期的缓存时,会携带缓存的标识 etag、时间等信息询问服务器缓存是否仍可复用,而 304 是告诉客户端可以复用缓存。
307 Temporary Redirect:类似 302,但明确重定向后请求方法必须与原请求方法相同,不得改变。
308 Permanent Redirect:类似 301,但明确重定向后请求方法必须与原请求方法相同,不得改变。
二、错误的响应码
4、4xx 客户端出现错误
400 Bad Request:服务器认为客户端出现了错误,但不能明确判断为以下哪种错误时使用此错误码。例如 HTTP 请求格式错误。
401 Unauthorized:用户认证信息缺失或不正确,导致服务器无法处理请求。
403 Forbidden:服务器理解请求的含义,但没有权限执行此请求。
404 Not Found:服务器没有找到对应的资源。
405 Methon Not Allowed:服务器不支持请求行中的 methon 方法。
406 Not Acceptable:对客户端指定的资源表述不存在(例如对语言或编码有要求时),服务器返回表述列表供客户端选择。
407 Proxy Authentication Required:对需要经由代理的请求,认证信息未通过代理服务器的验证。
408 Request Timeout:服务器接收请求超时。
409 Conflict:资源冲突,例如上传文件时目标位置已经存在版本更新的资源。
410 Gone:服务器没有找到对应的资源,且明确的知道该位置永久性找不到该资源。
411 Length Required:如果请求含有包体且未携带 Content-Length 头部,且不属于 chunk 类请求时,返回 411。
412 Precondition Failed:复用缓存时传递的 If-Unmodified-Since 或 If-None-Match 头部不被满足。
413 Payload Too Large/Request Entity Too Large:请求的包体超出服务器能处理的最大长度。
414 URI Too Long:请求的 URI 超出服务器能接受的最大长度。
415 Unsupported Media Type:上传的文件类型不被服务器支持。
416 Range Not Satisfiable:无法提供 Range 请求中指定当那段包体。
417 Expectation Failed:对于 Expect 请求头部期待的情况无法满足时的响应码。
421 Misdirected Request:服务器认为这个请求不该发给它,因为它没有能力处理。
426 Upgrade Required:服务器拒绝基于当前 HTTP 协议提供服务,通过 Upgrade 头部告知客户端必须升级协议才能继续处理。
428 Precondition Required:用户请求中缺失了条件类头部,例如 If-Match。
429 Too Many Requests:客户端发送请求的速率过快。
431 Request Header Fields Too Large:请求的 HEADER 头部大小超过限制。
451 Unavailable For Legal Reasons:由于法律原因资源不可访问。
5、5xx:服务器端出现错误
500 Internal Server Error:服务器内部错误,且不属于以下介绍错误类型。
501 Not Implemented:服务器不支持实现请求所需要的功能。
502 Bad Gateway:代理服务器无法获取到合法响应。
503 Service Unavailable:服务器资源尚未准备好处理当前请求。
504 Gateway Timeout:代理服务器无法及时的从上游获取响应。
505 HTTP Version Not Supported:请求使用的 HTTP 协议版本不支持。
507 Insufficient Storage:服务器没有足够的空间处理请求。
508 Loop Detected:访问资源时检测到循环。
511 Network Authentication Required:代理服务器发现客户端需要进行身份验证才能获得网络访问权限。
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/30b2a98f31b99fdc18025153c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论