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