Http 响应码

187 阅读9分钟

在前端开发过程中,都会和后端进行联调,针对不同的相应码进行不同的提示或调整,有的后端会通过200的响应码里提供专对的key给前端做处理,但更多更标准的是对接口的响应码做处理,code

响应码是什么

 响应码是接口(超文本传输协议)进行完成后响应状态的数字代号,三位数组成,第一位代表响应的状态,后两个做区分

类别和常用的响应码

 临时响应(1xx)

  临时响应码是在xml发送请求事件2状态下正在发出的情况下的响应结果

  • 100服务端接收部分请求,请继续传输,这时的服务端并未拒绝在等待的其余部分,如果请求已经结束了就可以忽略了,服务器必须是要给客户端做出响应的

  • 101请求者请求后服务器会通过Upgrade消息头来通知切换不同的协议完成请求,与此同时会发送完该响应服务器切换至定义的协议下进行下次响应

     服务端接口协议的替换,并且告知浏览器要切换Upgrade的消息切换协议进行请求

  • 102扩展状态码,处理将会被继续执行,当前没有状态码和响应可以被使用

  • 103预加载状态码,常用于和Link链接头(head里的link标签做预加载的)一起使用,便于用户在响应时间段内预加载一些资源

 成功(2xx)

  成功的响应码是在接口请求完成以后4状态下的处理,这时的服务端已经响应回来内容供前端使用了

  • 200 接口请求成功,服务器已成功响应结果
  • 201请求成功,服务器已创建新的资源,这个一般都是post或者put接口的对应响应
  • 202服务器成功接收但是没有处理,常见于异步操作,通常是大型操作服务器会异步操作一些内容,然后会先响应一个唯一id然后前端调用进度查询接口得到对应结果,避免接口长时间不响应的一些问题,即可能会由另外的进程或服务器来处理或批处理结果
  • 203服务器返回结果但是结果信息未被授权,来自另一个源,即前端信息元和服务器不匹配,可能是本地服务或者三方拷贝,一般不咋返回这个码而是直接返回200
  • 204服务器成功处理但是没有返回任何内容(若为delete接口,则代表资源不存在),大致就是我没有内容能给你,一般需要你做处理的话会在响应头来体现
  • 205服务器成功处理但是内容被重置了无法返回了,这时需要告知用户代理重置发送此请求的文档,刷新
  • 206服务器处理部分get请求,客户端发送请求范围标头只请求一部分资源时携带
  • 207多个状态码的时候会出现,多在传输有关资源的信息体现
  • 208在DAV这个网络文件系统内使用dav:propstate 响应元素避免重复枚举多个绑定的内部成员到同一集合
  • 226服务器已完成一个或多个资源的get请求,响应结果时当前实例的一个或多个实例的操作结果表示

 重定向(3xx)

  这里是服务器资源调整或者为了一些安全策略等操作需要你这个接口跳转至另一个接口连接来获取信息,一般在响应头的location中体现或者响应体直接体现

  • 300针对性请求,服务器可识别请求者的user agent获取用户设备信息进行选择性操作,也能提供操作列表给请求者选择,请求的响应可能会有很多很多,建议使用指定的链接便于用户抉择
  • 301请求网页被彻底的移动到新的位置。会自动将请求者转移到最新的位置,这里的资源url会被永久性更改,在响应中给出新的url
  • 302资源被临时移动或者服务器于不同位置进行网页响应,请求者可以继续使用该请求获取最新的接口数据(这里会自动识别location的响应头做下次请求),这里的url只是暂时被更改可访问的资源,时间很短,很快失效,可以做资源保护等,当然也有设置缓存时间较长的,但是一般不会太长
  • 303当请求者根据不同的位置进行接口请求时,因为要检索响应所以返回这个表识, 服务端发送此响应表示客户端通过一个get请求在另一个uri中获取请求资源
  • 304上次的资源被请求后没有更改,有缓存,直接读取缓存的数据,体现在响应头的协商缓存上,若是强缓存直接就返回200读取数据不走服务器了
  • 305请使用代理请求网页,服务器对这个接口有限制,不过这个哈想被弃用了,原来是说请求的响应必须被代理访问
  • 306仅被保留,在http协议版本1的时候使用,现在没咋见过了
  • 307 临时重定向,有点像302,服务器已达到不同位置的不同响应,但请求者还是使用原有位置进行请求,不过用户不能随便切换http请求方式,第一次是啥第二次就是啥,若http请求重定向到https上就去要清除缓存或者重置代理了
  • 308永久重定向,类似301,用户永久重定向到另一个资源,但是用户也是不能随便更换http请求方式第一次是啥就是啥

 这意味着资源现在永久位于由Location:HTTP Response 标头指定的另一个 URI。这与301 Moved PermanentlyHTTP 响应代码具有相同的语义,但用户代理不能更改所使用的 HTTP 方法:如果在第一个请求中使用POST,则必须在第二个请求中使用POST

 请求错误(4xx)一般指客户端的错误响应

  这里一般是服务器接收到我们的请求但是客户端发送请求缺斤少两,方式不对,参数不对等导致服务端不能正常溜顺的走到核心代码出校验处理数据而发出的控诉,需要前端找到对应的问题做对应的处理

  • 400请求错误,服务器不理解该请求方式,一般都是传参传错了,也可能是文件传输大小超出默认的大小需要服务端调一下,还有就是域名请求错误等。。。
  • 401用户不存在,让他登陆或注册个账号做唯一id
  • 402保留字段,目的是为了用到数字支付里边,但是很少用,目前也没有标准约定到这里
  • 403用户没有这个权限,一般是RBAC或者ABAC鉴权模型中发现用户没有操作这个数据的权限而返回的
  • 404没有这个数据,一般就跳无数据页面了
  • 405该请求方式或指定方法被禁用,一般CRUD的时候接口存在但是对应的restful的delete接口不存在或不让你使用,诶,我就给你返回这个,你换个方法吧或者和服务端协商一下
  • 406服务器不接受该请求,无法根据请求的特性做出响应,常见于服务器无符合用户代理标准内容时所发出的响应
  • 407这个有点类似401,主要是代表指定请求者应授权使用代理,即认证操作需要代理完成
  • 408接口请求超时,常出现在弱网或者大文件操作长时间回不来结果
  • 409服务器响应内容包含特殊或冲突信息导致的服务器完成请求后传输失败,所以定义传参时要注意摒弃关键字
  • 410请求资源已被永久删除,没这个资源了,倒闭啦,不干啦,老板跑路啦
  • 411标头字段长度过长且无有效信息,毕竟有输入限制,别弄太长了
  • 412请求时的条件未被服务器满足
  • 413请求实体过大服务器接收不了,有点考验性能可以考虑切片上传
  • 414url过长服务器处理不了,浏览器能发出的长度和服务器接收的长度有所差异所以要特殊注意一下,不过没人整那么长的url,除非他想整活
  • 415不支持的媒体类型,请求格式不接受页面支持
  • 416请求范围不符合要求,服务器提供不了请求的数据范围,一般是body数据过多导致,链接一般256字符限制,body一般4-8M限制
  • 417服务器未满足标头字段的要求

 服务器错误(5xx)常常是后端的错误

  这里一般是服务端算法写错导致,当然也可能是前端请求错误,还是要仔细查看的

  • 500服务器内部错误导致无法完成请求
  • 501服务器不具备完成请求的能力,请求方法未被识别等情况
  • 502网关或代理无响应出错而返回
  • 503服务器目前无法使用,请稍后再试哈,一般服务器没起来或者被挤爆了
  • 504网关或代理没有及时收到上游服务器的请求导致
  • 505http协议不受服务器支持