HTTP的使用指南 青训营笔记

77 阅读4分钟

这是我参与第五届青训营伴学笔记的第五天

http协议

1.初识http

http协议即为 超文本传输协议

应用层协议,基于tcp协议

请求 响应

简单可扩展

无状态 每个请求之间都是孤立的

2.协议分析

使用版本

0.9 单行协议 只可承载html文档

1.0 构建可扩展性 支持多种文档类型 ( 基于tcp)

1.1 标准化协议 复用 缓存 内容协商 在目前情况下是使用最久的版本

317b44abdc42cc5c4e37e2d00c2952b.png

报文 method

a835d45113bcc6e9deb7f68f9eedfc7.png head使用较少

trace 使用较少

safe:不会修改服务器的数据的方法

     get   head   options
     

ldempotent(幂等):同样的请求被执行一次和多次效果一致,服务器的状态也是 所有safe的方法都是幂等

                 get  head  options   put  delete

状态码

三位表示

1xx 接受

2xx 成功

3xx 重定向 要求必须更替

4xx 客户端错误 请求有语法错误

5xx 服务器的错误

59397b0553d57c69262bbf2870ff2e2.png

restful API

一种API设计风格

必须遵循 1.每个url代表一种资源

2.客户端和服务器之间,传递这种资源的某种表现层

3.客户端通过http method 对服务器端资源进行操作,实现“表现层状态转化”

f4db8919dc36913792780e140ef29b6.png

常用请求头 有很多请求头 列举一些比较常见的

常用响应头

set-cookie 告诉服务器要传输那些cookie信息

984422ec01c1daaa16d7bb8f6066ffc.png

常用响应头

155baf0a997e3970ae38c97f26c5248.png

缓存

强缓存 时间截

可缓存性

到期

重新验证 一旦资源过期 没有设置must断开服务器时 有本地缓存会使用本地缓存

协议缓存 etag/if-none-match:资源的特点版本的标识符 类似指纹

last-mod 最后的修改时间 绝对时间

和缓存相关的请求头在浏览器中的优先级

723b21eb5892ab4ecaf17ed3de20305.png

cookie

set-cookie-response

name=value 必须要返回“”=“”这样的字符键

secure 更安全

httponly 加强安全性

MDN有更多的协议介绍

8b62662cd459e2669c68d7c906c89ce.png

发展

http/2

更快 更稳定 更简单

每个message都化为帧 每个帧都包含帧头 至少也会标识除当前帧所属的数据流

这里的帧采用二进制编码 使得传输效率更高

消息:与逻辑请求或响应消息对应的完整的一系列帧

数据流:已建立的连接内的双向字节流,可以承载一条或多条消息

交错发送 :接受方重组织 提高了数据传输的效率

1.每个目标和地址建立链接后,链接都是永久的

2.流控制:阻止发送方向接受方发送大量数据的机制 提交效率

3.服务器推送 智能分析,主动推送一些信息 但是有些时候用不到这些信息就会降低效率

https

经过一些加密的过程更为安全

对称加密:加密和解密都是使用同一个密钥

非对称加密:加密和解密需要不同的密钥 公钥 私钥

一般我们会混用对称和非对称加密

a60c0972a6e0a5b2a3600a13e8363ba.png

3.场景分析

静态资源

(提高用户体验)静态资源部署方案:缓存+CDN+文件名hash

1.使用本地缓存

2.没有本地缓存,把静态资源放在CDN上面

CDN 通过用户就近性服务器(比如在地理位置上就近)负载的判断,CDN确保内容以一种极为高效的方式 为用户的请求提供服务

3.文件名哈希

场景分析-登陆

为什么发起option请求

跨域 cross-origin
协议还有其他部分不同被视为跨域

同域 same-origin
https 默认有:443端口号

如果网址不同会认为是同域

跨域请求怎么处理 请求分为: 简单请求 复杂请求

发起预请求 服务端是否允许跨域请求(复杂请求)

786e1679c53537a08a63f8af22a6a95.png 相关协议头 access-control-

跨域解决方案

1.CORS

2.代理服务器

 同源策略是浏览器的安全策略,不是http
绕开浏览器

3.Iframe通信 使用不方便

刷新之后为什么可以记住登录信息

鉴权

1.session+cookie

2.JWT

cf974032044a7441eca735723332da9.png

跳转后的网站自动登录

是一种解决方案 SSO:单点登录

HTTP 协议的应用场景分析 - 掘金 和另外 4 个页面 - 微云君 - Microsoft​ Edge 2023_1_20 20_06_20.png

4.实战

如何发起http协议

在浏览器的场景中

readstate

下面表示阶段 0
1 2 3 4 完成

69c2ec5d6b61ad767d872913e580233.png

AJAX之Fetch

在Node场景中

常用的请求库 axios

支持浏览器,nodejs环境

有丰富的拦截器

用户体验
1.网络优化

CDN加速传输速度

DNS预解析

2.稳定性

**重试机制 **

超时

错误

重试是保证稳定的有效手段,但是要防止加剧恶劣情况

缓存

缓存合理使用,作为最后一道防线

数据安全

-HTTPS

-劫持

了解更多
通信方式

WebSocket 全双工通讯网络技术

场景:实时性高

扩展

QUIC 基于UDP封装的协议 借用了UDP

类似于TCP的可靠传输

类似于TLS的加密传输,支持完美前向安全