目录
📕引言
关于HTTP响应报文,大部分都与请求报文类似,这里主要介绍一下响应报文里面的 “状态码” (status code)
状态码就描述了这次HTTP请求是否成功,失败的原因
这里的状态码很多,只需要掌握以下常见的状态码即可
🎍200 OK
这是一个最常见的状态码, 表示访问成功.
抓包抓到的大部分结果都是 200
通过Fiddler抓取必应搜索页面:
🍀404 Not Found
标识客户端请求的资源在服务器这边不存在
前面讲到url中,是由IP+端口+路径+查询字符串......,这里的路径就是服务器上管理的某个资源
所谓的404就是你访问的url中的路径,这个路径所代表的资源在服务器这边不存在。
例如:打开哔哩哔哩上的某个视频:
红色方框中就表示我要访问的哔哩哔哩上的某个具体的视频资源
如果说我在这个资源路径随便修改,很可能就会得到一个404这样的响应:
有的网站做的比较简陋,就会直接显示404 Not Found,这里只是b站做得比较好
在抓包结果中也能看到:
得到的响应内容:
🎄403 Forbidden
表示客户端的权限不足,被禁止访问了。有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问). 如果用户没有登陆直接访问, 就容易见到 403.
例如:我退出之后访问码云上的私有仓库
抓包的响应:
🌴405 Method Not Allowed
这个可以简单了解。
表示请求中的方法,服务器不支持
例如在发送的请求中,带有GET/POST,服务器的代码逻辑就需要处理上述请求,假如服务器没有实现对应的逻辑,比如你只实现了处理GET,没实现处理POST,此时你发送POST就可能得到405.
🎋500 Internal Server Error
服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况,出bug(服务器异常崩溃)会产生这个状态码.
例如出现一些空指针异常,下标越界异常......
咱们平时常用的网站很少会出现 500 (但是偶尔也能看到)
🌳504 Gateway Timeout
当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况.
这种情况在双十一等 “秒杀” 场景中容易出现, 平时不太容易见到.
🌲302 Move temporarily
表示临时重定向.
理解 “重定向”
就相当于手机号码中的 “呼叫转移” 功能. 比如我本来的手机号是 132-1234-5678, 后来换了个新号码135-1234-5678, 那么不需要让我的朋 友知道新号码, 只要我去办理一个呼叫转移业务, 其他人拨打 132-1234-5678 , 就会自动转移到 135-1234-5678 上.
访问某个地址的时候,访问的是旧地址,自动跳转到新的地址。
登录:浏览器收到302之后,自动跳转的
登录码云通过Fiddler抓取登录响应:
后面的单词只是描述,只要是302即可。
注意:响应中的Header里面有一个Location,这是302响应中最需要体现的一个Header,描述了接下来要跳转到哪个地址上。
本次跳转就是要跳转到码云的主页上面:
在抓包结果中可以看到在302重定向之后,紧接着在下面发起了请求码云主页的请求,从302收到响应到发出码云页面请求这个过程不需要手动干预,由浏览器自动完成。
🎍301 Moved Permanently
永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址.
永久重定向与临时重定向:
🍀状态码小结
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。
响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
❄Header
Header中的Content-Length,Content-Type和请求中的含义一致,不在过多讲述
补充:
构造HTTP请求:
- 通过form表单构造HTTP请求
- form发送GET请求
- form发送POST请求
- 通过ajax构造HTTP请求
- 发送GET请求
- 发送POST请求
- 通过Java scoket构造HTTP请求
这些关于前端方面的知识,后续在一一讲述
除了上述通过代码构造HTTP请求的方式,还可以通过工具来构造HTTP请求。这种方式更简单,更方便,尤其是需要做一些测试类的工作。
工具有很多,这里讲述postman!