Skip to content

常见的 HTTP 状态码

1xx:请求已接收,继续处理

2xx:成功

  • 200 (成功) 服务器已成功处理了请求。
  • 200(from cache) 强缓存(字段cache-control和expires决定)

3xx:重定向

  • 301 (永久重定向) 请求的网页已永久移动到新位置
  • 302 (临时重定向)请求的网页临时移动到新位置
  • 304 (协商缓存)(Last-Modifued/If-Modified-Since和Etag/If-None-Match这两组搭档都是成对出现)

4xx:客户端问题

  • 401 (未授权) 请求要求身份验证。
  • 403 (拒绝访问)nginx 配置找不到目录入口文件会报这个错误
  • 404 (找不到资源)
  • 405 (Method Not Allowd)客户端请求方法错误

5xx:服务器有问题

  • 500 (服务器内部错误) 服务器遇到错误。
  • 504 (网关超时)

推荐文章,建议精读:https://blog.csdn.net/zl399615007/article/details/84534884

301/302 重定向

小坑

  • ajax/axios发送get/post请求如遇到301/302并不会直接跳转,浏览器(chrome)会在后台静默使用xhr API的get请求去响应头的location地址,该请求无法拦截,同时也会存在跨域问题

301/302的临时解决方案

    1. 使用form标签,form表单提交后浏览器会根据响应头301/302做location的相应跳转处理【使用axios模拟form的post请求行不通】。 缺点:form提交后如果请求地址发生错误,浏览器将自动导航至错误信息页面,用户体验极差。
    1. axios无法拦截301/302的响应信息. response为undefined 因此可以同后端协商返回2xx或4xx,前端进行拦截后在进行js跳转