答:HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指浏览器客户端)的3位数字代码。这些状态码相当于浏览器和服务器之间的对话信息。它们相互沟通两者之间的事情是正常运行了还是运行失败了或者发生了一些其他的事情(如Continue)状态码有好多种。分为五大类。
1.以1开头的信息性状态码:
> 该类状态码表示服务器正在处理请求。
100 Continue:
表明目前为止,所有的请求内容都是可行的,客户端应该继续请求,如果完成,则忽略它。
101 Switching Protocol:
该状态码是响应客户端Upgrade
标头发送的,并且指示服务器也正在切换协议。
103 Early Hints:
主要用于与Link
链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。
2.以2开头的成功类状态码:
请求正常处理完毕
200 OK:
请求成功。成功的含义取决于HTTP方法:
-
GET
:资源已被提取并在消息正文中传输。 -
HEAD
:实体标头位于消息正文中。 -
POST
:描述动作结果的资源在消息体中传输。 -
TRACE
:消息正文包含服务器收到的请求信息。(方法不安全,一般不用)
201 Created:
请求已经成功,并因此创建了一个新的资源。这通常是在PUT
或POST
请求之后发送的响应。
202 Accepted:
请求已经接收到,但是没有响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。
204 No Content:
服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。遇到复杂请求
时候,浏览器会发送一个OPTION
方法进行预处理返回响应。
205 Reset Content:
服务器已经成功处理了请求,但是没有返回任何内容。与204响应不同,返回此状态码的响应要求请求者重置文档视图。
3.以3开头的重定向类的状态码:
需要进行附加操作一完成请求
301 Moved Permanently:
被请求的资源已永久
移动到新位置,并且将来任何对此资源的引用都应该使用响应返回的若干个URI之一。
302 Found(Previously “Moved temporarily”):
请求的资源现在临时
从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control
或Expires
中进行了指定的情况下,这个响应才是可缓存的。请求的资源现在临时
从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control
或Expires
中进行了指定的情况下,这个响应才是可缓存的。
303 See Other:
对当前的请求的响应可以在另一个URI上被找到,而且客户端应该采用GET
的方式访问那个链接。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
304 Not Modified:
如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。请求的时候一般结合If-Modified-Since
头部使用。
307 Temporary Redirect:
307的意义如上302。与历史上302不同的是在重新发出原始请求时不允许更改请求方法
。比如,使用POST请求始终就该用POST请求。
备注: 307和303已经替代了历史上的302状态码,现在看到的临时重定向的状态码是307。
4.以4开头的客户端错误类的状态码:
服务器无法处理请求
401 Unauthorized:
这意味着你的登录凭证无效。服务器不知道你是谁,这时,你需要尝试重新登录。
403 Forbidden:
服务器已经理解请求,但是拒绝执行它。与401不同,403知道是你登录了,但是还是拒绝了你。
404 Not Found:
说明服务器端无法找到所请求的资源。返回该响应的链接通常称为坏链(broken link)或死链(dead link),它们会导向链接出错处理
404 不能说明请求的资源是临时还是永久丢失。如果服务器知道该资源是永久丢失,那么应该返回 410 (Gone) 而不是 404 。
405 Method Not Allowed:
表明服务器禁止了使用当前 HTTP 方法的请求。需要注意的是,GET 与 HEAD 两个方法不得被禁止,当然也不得返回状态码 405。
406 Not Acceptable:
表示服务器端不支持 Accept、Accept-Charset、Accept-Encoding、 Accept-Language header 所要求的。
409 Conflict:
表示请求与服务器端目标资源的当前状态相冲突。
冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应。
410 Gone:
被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
412 Precondition Failed:
表示客户端错误,意味着对于目标资源的访问请求被拒绝。
413 Payload Too Large:
表示请求主体的大小超过了服务器愿意或有能力处理的限度,服务器可能会(may)关闭连接以防止客户端继续发送该请求。
414 URI Too Long:
表示客户端所请求的 URI 超过了服务器允许的范围。
422 Unprocessable Entity:
请求格式良好,但是由于语义错误而无妨遵循。这时候要检查下自己的传参格式语义有没有正确了。
429 Too Many Requests:
用户在给定的时间内发送了太多请求(“限制请求速率”)。
431 Request Header Fields Too Large:
表示由于请求中的首部字段的值过大,服务器拒绝接受客户端的请求。客户端可以在缩减首部字段的体积后再次发送请求。
5.以5开头的服务端错误类的状态码:
服务器无法处理请求
500 Internal Server Error:
表示所请求的服务器遇到意外的情况并阻止其执行请求。
501 Not Implemented:
表示request header 里的 method 或 Content-* 时不被服务器支持,无法被处理。另,服务器必须支持的方法(即不会返回这个状态码的方法)只有 GET 和 HEAD。501 响应默认是可缓存的。
502 Bad Gateway:
表示作为网关或代理角色的服务器,从上游服务器(如tomcat、php-fpm)中接收到的响应是无效的。
503 Service Unavailable:
表示服务器尚未处于可以接受请求的状态。
504 Gateway Timeout:
网关超时,服务器未能快速的做出反应。