首页 > 技术文章 > 面试必备:HTTP常见请求状态码及解决方案

chenfairy 2020-12-28 15:14 原文

标题1xx(临时响应)
  • 100(继续) 服务器已收到请求的第一部分,正在等待其余部分
  • 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换
2xx (成功)
  • 200(成功) 请求被正确处理并返回了结果
  • 201(已创建) 请求成功并且服务器创建了新的资源
  • 202(已接受) 服务器已接受请求,但尚未处理
  • 203(非授权信息) 令牌或登录状态失效
  • 204(无内容) 服务器成功处理了请求,但没有返回任何内容
  • 205(重置内容) 服务器成功处理了请求,但没有返回任何内容
  • 206(部分内容) 服务器成功处理了部分 GET 请求
3xx (重定向)
  • 300(多种选择) 针对请求,服务器可执行多种操作
  • 301(永久移动)请求的资源被永久重定向到新的位置,将从新的地址重新请求
  • 302(临时移动)请求的资源被临时重定向到新的位置
  • 303(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应
  • 304(未修改)原来缓存的文件没有修改过,可以继续使用原来缓存的文件
  • 305(使用代理) 请求者只能使用代理访问请求的网页
  • 307(临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
4xx(请求错误)
  • 400(错误请求)请求参数错误,服务器没有对数据做新建或修改
  • 401(未授权)无访问权限,用户名、密码、令牌错误
  • 403(禁止)得到访问授权,但访问是被禁止
  • 404(未找到)访问的是不存在的资源
  • 405(方法禁用)请求方式不正确
  • 406(不接受)请求的数据格式不是服务接收的类型
  • 407(需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理
  • 408(请求超时) 服务器等候请求时发生超时
  • 409(冲突) 服务器在完成请求时发生冲突
  • 410(已删除)请求的资源被永久删除
  • 411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求
  • 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件
  • 413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力
  • 414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理
  • 415(不支持的媒体类型) 请求的格式不受请求页面的支持
  • 416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码
  • 417(未满足期望值) 服务器未满足"期望"请求标头字段的要求
  • 422(错误)服务器创建对象时发生错误
5xx(服务器错误)
  • 500(服务器内部错误) 服务器不可用,未返回正确的数据
  • 501(尚未实施) 服务器不具备完成请求的功能
  • 502(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应
  • 503(服务不可用)服务器过载或维护中,通常是暂时状态
  • 504(网关超时)服务器响应超时
  • 505(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本
常见状态解决方案
  • 404(Not Found)服务器无法找到请求的页面或资源

    • a.此类报错首先考虑我们的接口写的是否正确(可以借用postman来测试)
    • b.其次可以检查资源的路径是否出错
  • 405(Method Not Allowed )方法不允许,方法禁用。

    • a.一般出现在servlet中比较常见,就是自己的service函数写错了
    • b.方法名称写错,方法参数类型与标准不一致
    • c.方法异常、返回值类型与标准不一致(这一般是前端的问题,解决方案是:把post请求换成get请求)
  • 500(Internal Server Error) 服务器内部错误,不能完成客户的请求

    • a.500报错一般是后端服务器问题,但也不排除前端出错,例如后台报序列化错误,可能是因为前端没有设置content-Type=application/json
    • b.重要的是要查看写的后端业务逻辑代码有没有问题,根据报错提示查找bug
    • c.常见的错误位置:NullPointException,数据库中提取的数据没有提取到而给另一个对象传递了空值或注入某个对象过程中出现空值,没有正确获取到对象的而出现异常
  • 501( Not Implemented)尚未实施,或请求格式错误。

    • a.一般考虑我们前端写的ajax中的type:"post/get"是否出错或者from表单中的method:"post/get"是否书写错误

推荐阅读