HTTP | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
HTTP
Method

状态码
1xx 指示信息,表示请求已经被接收,继续处理
2xx 成功,表示请求已经被成功接收,处理,接收
3xx 重定向, 完成请求必须进行更进一步的操作
- 301 永久重定向,请求已经被永久移动到新的URL
- 302 临时重定向
4xx 客户端错误,请求有语法错误 or 请求无法实现
- 400 请求错误,通常是访问的域名未绑定造成
- 401 请求没有权限
- 403 禁止访问,服务器理解请求,但是拒绝执行
- 404 访问的资源不存在 or 已经被删除
5xx 服务器错误,服务器未能实现合法的请求
- 500 服务器发生未知的错误
- 502 服务器从上游的服务器接收到无效的响应
- 503 服务器临时错误
- 504 服务器响应超时
常用请求头

常用响应头

缓存
强缓存(报文)

协商缓存(报文)

流程

cookie
Set-Cookie-response(报文)

HTTP2部分简单提一下
- 消息: 与逻辑请求和响应消息对应的完整的一系列帧。比如响应可以分为响应头一帧发送,响应体一帧发送,构成一个完整的消息。发送的特点:交错发送,接收方来重新组织。
- HTTP2连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据的机制。比如,在客户看视频的时候,如果点了暂停,就可以先拒绝相关的视频数据,将浏览器性能用到其他的地方。
- 服务器推送:服务器在发送数据的时候可以额外主动的发送一些数据。比如,当浏览器请求html文件的时候,如果html文件里引用了css,js文件,服务器可以主动的将css,js文件和html文件一起发送给浏览器。;
HTTPS部分简单提一下
流程图

静态资源常见解决方案
缓存 + CDN + 文件名hash
- 缓存:浏览器请求静态资源时会先看有没有缓存,有缓存,并且确认缓存新鲜有效的话,就会使用缓存。
- CDN:会优先选择向离用户所在地最近的服务器发送请求。
- 文件名hash:文件名里后面会添加一个hash值,这个hash值一般是对版本号的加密,当同一个文件名后面的hash值不同时,就会自动请求最新版本的文件。
跨域常见解决方案
- cors:在发送正式请求前会先发送一次options类型的预请求,预请求的相关协议头会携带相关信息,这些信息会被服务器用来判断是否应该支持此次跨域请求。
- 代理服务器:浏览器向服务器请求数据,存在跨域的问题,但是服务器向服务器请求数据是不存在跨域的,所以可以通过一个代理服务器来当中间者,代理发送请求,代理接收数据。
- iframe:有很多不便的地方,感兴趣的话,请读者自行了解