关于HTTP协议的状态码理解
前言
Web初学者,今天在学习之余,终于看了《图解HTTP》,尽管书上描述的已经很详细,而且也很好理解,这篇文章主要是当做我的阅读笔记吧~
正文
什么是状态码?状态码能做啥?
状态码是在HTTP协议的响应报文中状态行中的一串反映客户端向服务器端请求的结果。借助状态码,可以知道服务器端是否正常处理请求,若出现错误,状态码可以反映哪里出现问题。
状态码的组成
由3位数字和一个反映原因短语的字符串构成。
状态码的分类
分为5类:
| 类别 | 描述 | |
|---|---|---|
| 1XX | 信息性状态码 | 接受的请求正在处理 |
| 2XX | 成功状态码 | 请求正常处理完毕 |
| 3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
| 4XX | 客户端错误状态码 | 服务器无法处理请求 |
| 5XX | 服务器错误状态码 | 服务器处理请求出错 |
仅记录在RFC2016上的HTTP状态码就达40种,若加上WebDAV和附加HTTP状态码等扩展,数量就达60多种。但实际上经常使用到的大概14种。(书上原话)
2XX
200 OK
这个状态码,我说是很多人最常见也是最喜欢的没毛病吧。
200 表示客户端发送的请求在服务器端被正常处理了。服务器端在响应报文中会随着方法的不同返回不同的信息。比如用GET方法,返回的是请求的资源的实体。
204 No Content
该状态码表示请求被服务器端正常处理了,但没有资源返回。
206 Partial Content
这个是客户端对服务器端进行一个范围请求,对应地,服务器端针对客户端的范围请求的范围相应。
3XX
3XX的状态码表示客户端发送请求后,浏览器还需要执行一定的操作,服务器端才能正常处理请求。
301 Moved Permanently
永久性重定向。白话意思就是说你要访问的资源已经更换URI了,不在该URI上,需要重新访问
302 Found
临时性重定向,意思就是你本次要访问的资源暂时更换URI了,本次访问需要更换其他URI才可能访问该资源。
303 See Other
该状态码表示请求访问的资源存在另外一个URI,需要用GET方法定向获取该资源。
304 Not Modified
表示服务器端接受到请求后,因为不符合某些条件,所以返回该状态码告诉客户端请求成功,但不符合访问条件,因此无法访问。该状态码与重定向无关,资源还在该URI上。
307 Temporary Redirect
临时重定向。该状态码和302意思是一样的。
4XX
4XX表示是客户端发生了错误。
400 Bad Request
该状态码表示客户端发送的请求报文中存在语法错误,导致服务器端无法理解。
401 Unauthorized
两种情况
如果是第一次请求后返回的结果,表示需要进行HTTP认证。
如果是第二次请求的话,则表示认证失败。
403 Forbidden
该状态码表示客户端的请求被服务器端拒绝了。产生的原因可能是没有获得文件系统的授权,或者是访问权限出现问题等等。
404 Not Found
表示访问的资源不存在。当然,也可以在服务器端拒绝请求且不想说明理由使用。
5XX
最后一个就是服务器端出现的问题
500 Internal Server Error
表示服务器出现内部故障,可能是资源文件的bug,也可能是临时故障。
503 Service Unavailable
表示服务器出现超负载,也可能是服务器正在维护中。