Blog

常见 http 状态码、解释及解决方案

参考文章:mdn http code

200:一切正常

缓存相关 300: 内容协商,表示服务器有多种资源,需要客户端选择一种,重新发次请求
301:moved permanently, 资源永久重定向,资源被永久移动到新位置,需要重新去请求资源的新位置,所有请求都会变成 get
302:not found, 临时重定向,表示资源的临时移动,会将 post 变为 get 方式请求资源
303:see other, 临时重定向,会将 post 变为 get 方式请求资源,与302不同的是303 是表示用新的 uri 表示资源
304:所请求资源没有变化,跟 200 返回结果一致,数据来源于缓存 307:temporary redirect, 临时重定向,不会将 post 变为 get 方式请求资源
308: 也是永久重定向,与 301 不同的是,不会把 post 变为 get 请求,保持原请求的 method 和 data
永久重定向可以被缓存,包含 301, 308。临时重定向不可以被缓存,包含 302, 303, 307

客户端错误 400:bad request, 请求错误,原因有以下情况

  1. 请求参数和服务器不一致,多为前端处理错误。比如下载文件时,如果包含中文名称,需要进行转义
  2. 字段名称写错了

403:forbidden,服务器禁止访问,原因有以下情况

  1. 资源不可访问,服务器没有开放这个资源,强行访问。让服务器开放这个资源访问权限

404:url not find, 最常见的,服务器不能识别你发送的 http 请求,原因有以下情况

  1. url 拼写错误。检查前端 url 拼写,同服务器统一
  2. 服务器没有提供这个方法。后台方法写漏了,让他加上

405:method not allowed, 服务器不允许操作这个方法,原因有以下情况

  1. 服务器能识别,但是 http 请求的数据不满足要求,比如 应该是 post ,但是传成了 get。同服务器要求数据格式统一

406:method not acceptable, 服务器方法请求不到,原因有以下几种

  1. responese header:客户端要求 json ,服务器返回的是 map

服务器错误
500:这个是发生在服务器内部的错误,原因有以下情况

  1. 参数名称写错,服务器代码在处理的时候,没有做参数安全检查,所以直接就在服务器报错。保持跟接口参数名称一致
  2. 服务器内部出错,比如内存溢出等。让后台解决吧

1 为什么要对 url 进行编码

因为 uri 参数中可能包含有保留字符 ?|#|/ 等,或者包含中文字符,浏览器是无法识别。
怎么编码:使用 % + utf8 编码为 ASCII 的 16 进制表示方式