HTTP 状态码详解

文章
林里克斯

HTTP 状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的 3 位数字代码。HTTP 状态码的核心作用是 Web Server 服务器用来告诉客户端,当前的网页请求发生了什么事,或者说当前 Web 服务器的响应状态。所以 HTTP 状态码常用来判断和分析当前 Web 服务器的运行状况。

排错能力



一、HTTP 状态码的分类


  • 1 开头的状态码

信息,服务器收到请求,需要请求者继续执行操作

  • 2 开头的状态码

成功,操作被成功接收并处理

  • 3 开头的状态码

重定向,需要进一步的操作以完成请求

  • 4 开头的状态码

客户端错误,请求包含语法错误或无法完成请求

  • 5 开头的状态码

服务器错误,服务器在处理请求的过程中发生了错误


二、具体 HTTP 状态码的含义


  • 1 开头的 HTTP 状态码

表示临时响应并需要请求者继续执行操作的状态代码。

100   Continue(继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。  
101   Switching Protocols(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
  • 2 开头的 HTTP 状态码

表示请求成功

200     OK 成功处理了请求,一般情况下都是返回此状态码; 
201     Created 请求成功并且服务器创建了新的资源。 
202     Accepted 服务器已接受请求,但尚未处理; 
203     Non-Authoritative Information 服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝;
204     No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息;
205     Reset Content 服务器成功处理了请求,且没有返回任何内容。但是与 204 响应不同,返回此状态码的响应要求请求者重置文档视图;
206     Partial Content 表示该服务器已经成功处理了部分 GET 请求;
207     Multi-Status
208     Already Reported
226     IM Used
  • 3 开头的 HTTP 状态码

重定向代码,也是常见的代码

300   Multiple Choices (多种选择)  针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。 
301   Moved Permanently (永久移动)  请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 
302   Moved Temporarily (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 
303   See Other(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 
304   Not Modified(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。 
305   Use Proxy(使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。 
307   Temporary Redirect(临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
308   Permanent Redirect/Resume Incomplete 

重定向 301 和 `302 的相同和不同点

301 和 302 状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的 URL 地址,这个地址可以从响应的 Location 首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址 B)——这是它们的共同点。
他们的不同在于: 301 表示旧地址 A 的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302 表示旧地址 A 的资源还在(仍然可以访问),这个重定向只是临时地从旧地址 A 跳转到地址 B,搜索引擎会抓取新的内容而保存旧的网址。
  • 4 开头的 HTTP 状态码

表示请求出错

400   Bad Request 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求; 
401   Unauthorized 请求要求身份验证;对于需要登录的网页,服务器可能返回此响应;
402   Payment Required 为了将来可能的需求而预留的;
403   Forbidden 服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交;
404   Not Found 请求失败,请求所希望得到的资源未被在服务器上发现; 
405   Method Not Allowed 请求行中指定的请求方法不能被用于请求相应的资源; 
406   Not Acceptable 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体; 
407   Proxy Authentication Required 与 401 响应类似,只不过客户端必须在代理服务器上进行身份验证;
408   Request Timeout 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送;
409   Conflict 由于和被请求的资源的当前状态之间存在冲突,请求无法完成;
410   Gone 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址;
411   Length Required 服务器拒绝在没有定义 Content-Length 头的情况下接受请求;
412   Precondition Failed 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个;
413   Request Entity Too Large 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力;
414   Request-URI Too Long 请求的 URI 长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务;
415   Unsupported Media Type 对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝;
416   Requested Range Not Satisfiable 如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码;
417   Expectation Failed 在请求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect 的内容无法被满足;
421   Misdirected Request;There are too many connections from your internet address;从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围;
422   Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应;
423   Locked 当前资源被锁定
 - 423   Interval Too Brief 注册时长间隔过短;先确认一下服务器配置的注册周期,然后照着这个值修改终端的注册周期,默认一般是600S;
424   Failed Dependency 由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH;
425   Unordered Collection 在 WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中;
426   Upgrade Required 客户端应当切换到TLS/1.0;(RFC 2817)
428   Precondition Required(要求先决条件)客户端发送 HTTP 请求时,必须要满足的一些预设条件;
429   Too Many Requests(太多请求)
431   Request Header Fields Too Large(请求头字段太大)
440   Login Timeout(登录超时)
444   No Response(没有回应)
449   Retry With 由微软扩展,代表请求应当在执行完适当的操作后进行重试
450   Blocked by Windows Parental Controls 由微软控制
451   Unavailable for Legal Reasons/Redirect(因法律原因不可用/重定向)
494   Request Header Too Large(请求标头太大)
495   Cert Error(证书错误)
496   No Cert(没有证书)
497   HTTP to HTTPS ()
498   Token Expired/Invalid(令牌过期/无效)
499   Client Closed Request/Token Required(需要客户端关闭请求/令牌)
  • 5 开头的 HTTP 状态码

代表 Server 有异常

500   Internal Server Error(服务器内部错误)服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现 
501   Not Implemented(尚未实施)服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。 
502   Bad Gateway(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。 
503   Service Unavailable(服务不可用)服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。 
504   Gateway timeout(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。 
505   HTTP Version Not Supported(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
506   Variant Also Negotiates
507   Insufficient Storage
508   Loop Detected(检测到循环)
509   Bandwidth Limit Exceeded(超出带宽限制)
510   Not Extended(未扩展)
511   Network Authentication Required(需要网络身份验证)
520   Unknown Error(未知错误)
598   Network Read Timeout Error(网络读取超时错误)
599   Network Connect Timeout Error(网络连接超时错误)

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

745 0 2019-06-19


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-20

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 214070 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!