什么是HTTP?
HTTP是超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。它是基于TCP上的应用层协议。
什么是HTTP状态码?
HTTP状态码的英文为HTTP Status Code。当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求,这就是HTTP状态码。
HTTP状态码的大致分类
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
2开头的常见的状态码
200 OK 请求成功。一般用于GET与POST请求
201 Created 已创建。成功请求并创建了新的资源
3开头的常见的状态码
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303 See Other 查看其它地址。与301类似。使用GET和POST请求查看
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。这里说一下304这个状态码,它表示该资源被浏览器缓存了不需要重新请求服务器。
4开头的常见状态码
400 Bad Request 客户端请求的语法错误,服务器无法理解,一般都是传参错误(少了某个参数或是参数的类型错误)。
401 Unauthorized 请求要求用户的身份认证,权限不足,资源存在但是你没有访问权限。
403 Forbidden 资源禁止访问,比如你的IP是黑名单等,我想说的是:这个在同前端跨域的时候遇到比较多,后台可以通过jsonp(只支持GET跨域)或者cors(支持POST/GET等)做。
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面。一般是URL地址的路径错误。
405 Method Not Allowed 客户端请求中的方法被禁止。一般是请求类型错误,比如是GET请求,你使用的是POST请求。
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式。比如我们上传文件时,要求enctype为multipart/form-data,如果这个参数错误就会报415错误。
5开头的常见状态码
500 Internal Server Error 服务器内部错误,无法完成请求 一般是后台代码抛了异常,比如空指针,数据库SQL语句报错等。
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。比如nginx或apache做服务器反向代理,所有服务都挂了就会报这个错误。
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求。就是服务器超时未给你返回请求。
总结
其实HTTP状态码这么多,不太可能全部记住,但是重要的必须记住。很多时候你查Http状态码表,看英文解释或者HTTP状态码表是不太明白产生的原因,实践才是记忆最好的推动力。我觉得我上面列出的状态码应该牢记。不管是前端还是后台,这个是再基础不过的。
参考资料
菜鸟教程官网HTTP状态码 http://www.runoob.com/http/http-status-codes.html