计算机网络系列 -- HTTP状态码

504 阅读4分钟

了解HTTP状态码及其含义很重要,特别是在前端与后端的请求交互过程发生错误后排查错误的时候

5xx 服务器错误

  • 500 服务器的内部错误
可能是服务端内部编程语言的语法错误导致的
  • 502 Bad Gateway 服务器自身是正常的,但访问的时候出错了,啥错误咱也不知道
  • 503 服务器崩了
场景:
1、站点`遭到攻击`,在`超过限制`时报503错误,待攻击停止就可以恢复了;
2、站点`规模较大`,并发请求过多;
解决:这种建议修改优化程序或需要升级更高类型主机
3、程序有错误,在短时间内产生`多次工作进程崩溃`,会因IIS7的快速故障防护功能而关闭程序池;
4、站点提供下载,当`带宽超过限制`时会报错,需停止下载功能,或者升级主机解决。

4xx 请求错误

  • 400 报文存在语法错误
场景:
前端提交数据的`字段名称``字段类型`与后端的真实数据`没有一致`;
解决:
比如前端提交数据到后台应该是`json字符串类型`,前端没有用`JSON.stringfy`将对象转化为字符串
  • 401 Unauthorized 需要用户名和密码
场景:
对于`需要登录才能请求`的网页,如果该网页的服务器收到请求当中`没有cookie``token不匹配`的情况返回此响应
其中没有cookie可能是因为:1. 用户`没有登录`2. 浏览器根据cookie的samesite字段作出`对csrf攻击的防范`
  • 403 Forbidden 服务器拒绝访问
场景:
原本我们链接地址是https://www.ceshi.com; 但是不小心配置成了http://www.ceshi.com,最后就会导致403的报错
解决:就是将http改成https
细看了下:这个错误应该是403.4。403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用"https"
  • 404 Not Found 服务器上找不到请求资源
Web 服务器找不到您所请求的文件或脚本。请`检查 URL `以确保路径正确
  • 405 请求方式不对
场景:
一般是GETPOST混淆,一般是`在POST的时候出现`ApacheIISNginx等绝大多数web服务器,都`不允许静态文件响应POST请求`
解决:
把 POST `改成 GET` 
  • 408 Request Timeout 服务器等待了太长时间
  • 414 Request-URI Too Long: 请求行里的 URI 太大
  • 431 Request Header Fields Too Large 请求头的字段内容太大
  • 413 Request Entity Too Large: 请求体的数据过大
  • 429 Too Many Request: 客户端发送的请求过多

3xx 用户需要进一步细化请求

  • 301 被请求 url 永久转移到新的 url
  • 302 被请求 url 临时转移到新的 url
详解:
301302状态码都表示`重定向`,就是说浏览器在拿到服务器返回的这个状态码后会`自动跳转`到一个`新的URL地址`
这个新的地址可以从`响应头``Location首部`中获取

请求url是:http://localhost:8081/web/hello

image.png

问题:网址 URL 劫持(由302重定向造成的)

场景:

  1. 从网站A(内容烂但URL简洁)上做了一个302跳转到网站B(搜索排名很靠前但可能URL很长很乱
  2. 有些搜索引擎有时(可能是因为A的网址简洁)会使用网站B的内容,但却显示收录了网站A的地址
  3. 网站B在为网站A作贡献,网站A接管网站B的优秀排名。从另一个角度讲,网站B的内容被网站A窃取了 解决: 向搜索引擎提供商如Google、Baidu提出举报
  • 304 浏览器请求的资源跟缓存的资源一样

缓存机制详见 浏览器系列 -- 浏览器缓存浏览器系列 -- CDN缓存

2xx

  • 200 OK 表示请求成功,通常在响应体中放有数据
  • 204 No Content 表示请求成功,但响应头后没有 body 数据
  • 206 Partial Content 顾名思义,表示只是部分内容,它的使用场景为 HTTP 分块下载断点续传,当然也会带上相应的响应头字段 Content-Range