http状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。
HTTP码的作用:表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常或者是否出现错误。
部分状态码的返回会跟上原因,比如下图所示:
按照第一个十进制数字的分类,可以分为以下五类:
状态码 | 类别 | 原因 |
---|---|---|
1xx | 信息状态码 | 接受的请求正在处理 |
2xx | 成功状态码 | 接受的请求已经正常处理完成 |
3xx | 重定向状态码 | 需要进行附加操作,以完成请求 |
4xx | 客户端错误状态码 | 服务端无法处理请求 |
5xx | 服务端错误状态码 | 服务端处理请求出错 |
细分:
2xx 成功状态码
200 ok
http请求在服务器端被成功处理
201 created
已创建。成功请求并创建了新的资源,该请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其URI已经随Locaton头信息返回。假如需要的资源无法及时建立的话,应当返回202 Accepted
204 no content
http请求在服务器端被成功处理,返回的响应报文中不含实体的主体部分,也不允许返回任何实体的主体部分。当浏览器在发送请求后接收到204响应,显示页面不会更新。
205 Reset content
服务器端成功处理了请求,但需要客户端重置内容,且返回的响应实体中没有任何内容。与204 no content不同,返回此状态码的响应要求请求者重置文档视图。该响应主要是被接受用户输入后,立即重置表单,以便用户能够轻松的开始另一次输入。与204响应一样,该响应也被禁止包含任何消息体,且以消息头后的第一个空行结束。
206 partial content
表示客户端进行了范围请求,而浏览器成功执行了这部分的GET请求。响应报文中Content-Range指定了实体内容
3xx 重定向状态码
301 Moved Permanently
永久重定向,请求的资源已经分配了新的URI,以后请求该资源
应该访问新的URI。如果已经把资源对应的URI保存为标签,应该按照location的首部字段重新保存。
302 Found
临时重定向,请求的资源已经被分配了新的URI,并且希望客户端本次请求新的URI(GET)。不用更新标签。
303 See Other
由于请求资源对应另一个URI,应使用GET方法定向获取请求的资源。如果浏览器原本的方法用POST方法去请求服务器,收到303,会改用GET去请求并访问。
304 Not Modified
表示客户端发送附带条件的请求时,服务端允许请求资源,但未满足条件的情况。常用于协商缓存的时候,比如:请求头部加上“if-Modified-Since”/"If-None-Match"字段,服务器根据请求头字段去判断目标资源是否被修改,如果没有被修改,则返回304,并且响应报文实体部分没有任何资源。
304和重定向没有关系
307 Temporary Redirect
临时重定向,和302 Found含义一样,区别在于307不会强制浏览器将POST方法改为GET方法,而是遵循浏览器自身的标准。
4xx 客户端错误
400 Bad Request
请求报文中存在语法错误。当错误发送时,需要修改请求的内容后再次发送请求。浏览器会像200OK 一样对待该状态码。
401 Unauthorized
发送的请求需要有HTTP认证(BASIC认证、DIGEST认证)的认证信息。第一次收到401状态码表示需要进行用户认证,第二次再收到401状态码说明用户认证失败。
403 Forbidden
对请求资源的访问被服务器拒绝了,当未获得文件系统的访问授权、访问权限出现某些问题(从未授权的发送源IP地址试图访问)等列举的情况都可能发生403。
5xx 服务器错误状态码
500 Internal Server Error
服务器端再执行请求时发生了错误。也可能是Web应用存在的Bug或临时的故障
502 Bad Gateway
网关或代理角色的服务器,从上游服务器(tomcat、php-fpm)中接收到的响应无效。
502 错误通常不是客户端能够修复的,而是需要由途径的Web服务器或者代理服务器对其进行修复。
503 Service Unavailable
服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。