参考:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/200

2 成功

204 No Content

image.png

206 Partial Content

表示请求已成功,并且主体包含所请求的数据区间,该数据区间是在请求的 Range 首部指定的。
image.png

3 重定向

使用场景

image.png

基本流程

image.png

类型

image.png

无限循环重定向—风险

image.png

meta标签-重定向

  1. <meta http-equiv="refresh" content="5">
  2. 这个表示当前页面每5秒钟刷一下,刷一下~
  3. <meta http-equiv="refresh" content="2; url='/'">
  4. 这个表示当前页面2秒后跳到首页~
  5. <meta http-equiv="refresh" content="0; url='http://www.qq.com/'">
  6. 页面直接跳转到腾讯网~

301

HTTP **301**``** 永久重定向** 说明请求的资源已经被移动到了由 [Location](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Location) 头部指定的url上,是固定的不会再改变。搜索引擎会根据该响应修正。

比如某次项目上线后,因为有支付功能,http访问chrome访问会提示不安全,故要求运维强制把http访问强制重定向到https。
重定向会修改post请求成get,参考307。
强制https后,后端用postman发送http post请求,但是响应不正常,最后通过gateway查到请求方式变成get导致。最后查到是301导致~~。

image.png
image.png

302

image.png
参考知乎登出链接,先302到首页,首页再302到登录页
image.pngimage.png
备注:302 Found,原始描述短语为 Moved Temporarily ,还可以在部分网站看到,登出是常见的302场景。
image.png

303 See Other

image.png
image.png

304 Not Modified—特殊重定向-使用缓存

HTTP 304 未改变说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
这通常是在一些安全的方法(safe),例如GET 或HEAD 或在请求中附带了头部信息: If-None-Match 或If-Modified-Since。
如果是 200 OK ,响应会带有头部 Cache-Control, Content-Location, Date, ETag, Expires,和 Vary.

通常浏览器检查请求资源超出缓存时间,浏览器会向服务器传送 If-Modified-Since和If-None-Match(可选报头,值Etag的值) 报头,询问该时间之后文件是否有被修改过,服务端验证过期缓存没有改变,任然有效,响应304,要求浏览器继续使用该缓存,服务端不会响应资源,通常这个用在静态资源(js、css、img等)优化上面。

image.png

307 Temporary Redirect

临时重定向响应状态码,表示请求的资源暂时地被移动到了响应的 [Location](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Location) 首部所指向的 URL 上。
原始请求中的请求方法和消息主体会在重定向请求中被重用
状态码 307[302](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/302) 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化。
常见于http跳转https,如下:
但是测了几个大平台,状态描述都成了Internal Redirect
image.png
302 VS 307 参考nextjs
https://nextjs.org/docs/api-reference/next/server#why-does-redirect-use-307-and-308

4

400 Bad Request

响应状态码表示由于语法无效,服务器无法理解该请求。 客户端不应该在未经修改的情况下重复此请求
image.png
http请求错误搭配443端口
image.png

401 Unauthorized

状态码 **401 Unauthorized** 代表客户端错误,指的是由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。
这个状态码会与 [WWW-Authenticate](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/WWW-Authenticate) 首部一起发送,其中包含有如何进行验证的信息

用作HTTP基本认证,参考登录鉴权(第一种)
image.png
通常用在简单的内部系统,比如内部自用的监控平台

image.png
接口工具如postman等会有相关配置

可能和该状态有关系(仅仅根据提示猜测):
有趣的是当我使用git clone http://协议的gitlab仓库地址时,
如果在终端,比如iterm2,仅仅报错误没权限。
image.png
但是如果我在vscode内用终端操作,则vscode会打开用户、密码登录框,就可以clone成功。我猜测vscode可能类似浏览器这种客户端,完全支持http协议

403 Forbidden

状态码 **403 Forbidden** 代表客户端错误,指的是服务器端有能力处理该请求,但是拒绝授权访问。
这个状态类似于 [401](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/401),但进入该状态后不能再继续进行验证。该访问是长期禁止的,并且与应用逻辑密切相关(例如不正确的密码)
image.png

405 Method Not Allowed

状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。
一般会返回allow:xxx,响应字段

image.png

410 Gone

image.png
image.png

429 Too Many Requests

某次线上遇到大面积429访问异常
image.png

5

500 Internal Server Error

image.png
image.png


502 Bad Gateway

**502**``** Bad Gateway** 是一种HTTP协议的服务器端错误状态代码,它表示作为网关或代理角色的服务器,从上游服务器(如tomcat、php-fpm)中接收到的响应是无效的。
Gateway) (网关)在计算机网络体系中可以指代不同的设备,502 错误通常不是客户端能够修复的,而是需要由途径的Web服务器或者代理服务器对其进行修复。

image.png


503 Service Unavailable

image.png
比如常见于改完代码,重新部署服务期间返回的状态
image.png
部署新版本,新旧pod切换中,访问服务503
image.png

image.png

504 Gateway Timeout

image.png

image.png
image.png

案例:同时支持8个明星出轨的微博

在2021/04/23 上午,只有冯丽颖和冯绍峰离婚一个热点的情况,web端无意外的又挂了
image.png
image.png
image.png

案例:本地nginx代理,上游服务超时

image.png
nginx-errorlog
超过60s
image.png
nginx默认上游服务超时60s
image.png
proxy_read_timeout 参数, 该指令是指从上游服务器两次成功的读操作耗时的超时时间,也就意味着从上游服务器成功读操作后,过了60S,没有再从上游服务器成功读操作的话,就会关闭该连接。
在nginx 的配置文件 在 http,server,location 三个位置任意一个位置
加上

  1. proxy_read_timeout 240s;

案例: 接口服务通过 —> Aws loadBalance—> istio ingress —> spring cloud gateway —> 具体java服务

这个504应该是spring cloud gateway 抛出的
image.png
image.png