(本文部分内容来自于肖佳《http抓包实战》,侵删)
1.状态码分类
http中规定了5类状态码,状态码由三位数字组成,第一个数字定义了响应的类别
2.常见的状态码
2.1 200
成功响应,所请求的资源成功发送回客户端
2.2 204
返回的http响应只有header和一个状态行,没有实体的内容(没有响应的body)
204状态码的作用:
(1)在不获取资源的情况下了解资源情况
(2)通过查看http响应中的状态码看某个对象是否存在
(3)通过查看header测试资源是否被修改
2.3 206
206状态码表示服务器已经成功处理了部分GET请求(有且仅有get请求才会返回206状态码)
部分场景如下:
(1)下载工具断点续传(迅雷)
(2)在线分段观看大视频、大文档
2.4 301
返回301,代表服务器已经永久转移到另一个新的地址
实际场景可能有:
(1)防止用户输错域名,比如谷歌将www.go0gle.com买下重定向到google.com
(2)网站更换域名,如京东原先域名是www.360buy,访问后会301到现在的jd.com
(3)多个权重不错的域名重定向到主域名上,有利于网站的排名
2.5 302
访问一个URL时,服务器要我们访问另外一个资源,这时候浏览器会发一个http请求访问新的资源,如访问需要登陆才能查看的文档。
#2.5.1 301和302的区别
301代表旧地址已经被永远移除了,搜索引擎会把权重算到新的地址;302表示旧的资源还在,重定向只是临时从旧地址跳到新地址,此时权重还是算到旧地址。
2.6 304
304表示上次打开的文档缓存还在,可以继续使用(如果不想使用缓存可以Ctrl+F5强制刷新页面)
2.7 400
客户端请求语法有错误(表单错误、cookie错误)
2.8 401(Unauthorized)
未授权错误,有些网页采用的是 HTTP 基本认证 (Basic Authentication),需要在 HTTP 请求中带上 Authorization Header
2.9 403(Forbidden)
请求拒绝
2.10 404(Not Found)
URL正确但资源不存在就报这个
2.11 500(Internal Server Error)
服务器内部错误,出现错误的原因有很多,比如代码的错误、数据库、连接语句出错、程序内部抛出异常、空指针错误等。
2.12 503(Server Unavailable)
服务器暂时不可用,维护着或者过载,可能会在一段时间内恢复