1、常见的 HTTP 响应状态码
- 在一个
HTTP请求
的响应报文
中的状态行
会有一个响应状态码
- 这个
状态码
是用来描述本次响应的状态
的 ●通常会出现五种状态码
:
- 100 ~ 199
- 200 ~ 299
- 300 ~ 399
- 400 ~ 499
- 500 ~ 599
2、100 ~ 199------请求准备状态
一般我们看不到,因为表示
请求继续
100
: 继续请求,前面的一部分内容服务端已经接受到了,正在等待后续内容101
: 请求者已经准备切换协议,服务器页表示同意剩下的状态码
:可以在服务端自定义这些状态码,但是已经有含义的这些规范的状态码是可以继续沿用的
3、200 ~ 299------请求成功
2开头
的都是表示成功
,本次请求成功了- 只不过不一样的状态码有不一样的含义(语义化)
200
: 标准请求成功(一般表示服务端提供的是网页)201
: 创建成功(一般是注册的时候,表示新用户信息已经添加到数据库)203
: 表示服务器已经成功处理了请求,但是返回的信息可能来自另一来源(服务端返回的数据不是在本地服务器返回的,而是通过其它服务器返回的数据,比如a找b借钱,b不够则找c借钱,c给完b,b在把数据给a)204
: 服务端已经成功处理了请求,但是没有任何数据返回
4、300 ~ 399------重定向
3开头
也是成功的一种,但是一般表示:重定向
301
: 永久重定向 => 当前服务器压根不是处理响应的服务器,只是转发请求的服务器,比如淘宝:请求的太多了,可能会把各种请求分给不同功能的服务器去处理302
: 临时重定向 => 服务器负载满了,给浏览器临时分配一个处理的地方304
: 使用的是缓存的数据305
: 使用代理 => 当前服务器并不负责返回响应,它只是转发请求的,让别的服务器去返回响应,然后它在转回数据
5、400 ~ 499------表示错误,配置信息可能出错了
4开头
表示客户端
出现错误
了
400
: 请求的语法服务端不认识401
: 未授权(你要登录的网站需要授权登录)403
: 服务器拒绝了你的请求 => 没有携带正确的信息/发起了一些异常请求/因为一些安全策略被服务器拒绝,来源可能不够安全404
: 服务器找不到你请求的 URL => 实际开发中:一般都会404去指代一切找不到资源的情况407
: 你的代理没有授权 => 违规代理408
: 请求超时 => 服务端超时410
: 你请求的数据已经被服务端永久删除
6、500 ~ 599------服务器错误
5开头
的表示服务端
出现了错误
500
: 服务器内部错误 => 告知服务端错误情况,让他维护一下代码503
: 服务器当前不可用(过载或者维护),也有可能是防火墙出现问题了 => 请求被防火墙拦截/服务器返回的响应被防火墙拦截505
: 请求的协议服务器不支持
7、常见的 HTTP 请求方式
- 每一个
HTTP请求
在请求行
里面会有一个东西叫做请求方式
不同的请求方式
代表的含义不同
- 我们比较常用的就是
GET
和POST
GET
: 一般用于获取一些信息使用(获取列表)POST
: 一般用于发送一些数据给服务端(登录)PUT
: 一般用于发送一些数据给服务当让其添加新数据(注册)DELETE
: 一般用域删除某些数据HEAD
: 类似于 GET 的请求,只不过一般没有响应的具体内容,用于获取报文头CONNECT
: HTTP/1.1 中预留的方式,一般用于管道链接改变为代理的时候使用PATCH
: 是和 PUT 方式类似的一个方式,一般用于更新局部数据- OPTIONS: 允许客户端查看服务端性能
8、GET 请求特征
参数
以QueryString
的形式发送,也就是直接拼接在 =>请求路径
的后面(url?QueryString => url?key = value)
- GET 请求会被
浏览器主动缓存
=> 在下次请求时,如果请求的参数没有发生改变,那么就可能调用缓存,提升浏览器的执行性能 - GET 请求根据不同的浏览器对
长度是有限制
的- IE: 2083 个字符
- FireFox: 65536 个字符
- Safari: 80000 个字符
- Opera: 190000 个字符
- Chrome: 8182 个字符
- APACHE(server阿帕奇服务器-后端处理请求的服务器): 理论上接受的最大长度是 8192 个字符(有待商榷)
- 对
参数的类型有限制
,只接受ASCII 码
的格式
9、POST 请求特征
- 参数以
request body
的形式发送,也就是放在请求体
中 - POST 请求
不会被浏览器主动缓存
,除非手动设置 - POST 请求的理论上是没有限制的(
不限制长度
=> 携带的数据内存大小),除非服务端做了限制 - 对
参数类型没有限制
,理论上可以传递任意数据类型,只不过要和请求头对应