这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
HTTP协议
从输入网址到网页展示的全过程:
- browser进程处理输入信息
- 浏览器内核发起请求
- 通过Internet到服务器返回响应
- 浏览器内核读取响应
- 浏览器内核进行渲染
什么是http
协议发展过程
-
HTTP/0.9 单行协议
- 只有GET请求
- 响应只有HTML文档
-
HTTP/1.0 构建可拓展性
- 增加了Header
- 有了状态码
- 支持多种文档类型
-
HTTP/1.1 标准化协议
- 链接复用
- 缓存
- 内容协商
-
HTTP/2 更优异的表现
- 二进制协议
- 压缩header
- 服务器推送
方法
方法的特性:
- 安全性:不会修改服务器数据(GET HEAD OPTIONS)
- 幂等性:同样请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的(GET HEAD OPTIONS PUT DELETE)
状态码
HTTP 状态码 (Status code) 是 HTTP 协议中用于表示请求/响应状态的三位数字代码。它由服务器在响应中返回,可以帮助客户端理解请求的结果。主要分为五类:
- 1xx (Informational): 表示请求已被接受,继续处理。
- 2xx (Successful): 表示请求已成功被服务器接收、理解、并接受。
- 3xx (Redirection): 表示请求要求进行附加操作以完成。
- 4xx (Client Error): 表示请求中有语法错误或请求无法被服务器理解。
- 5xx (Server Error): 表示服务器在处理请求的过程中发生了错误。
常见的状态码有:
- 200:客户端请求成功
- 301:资源被永久转移到了其他URL
- 302:临时跳转
- 401:未授权
- 404:请求资源不存在
- 500:服务器内部错误
- 504:网关或代理服务器无法在规定时间内得到响应
RESTful API
一种API设计风格。REST指的是表现状态转化
- 每个URI代表一种资源
- 客户端和服务器间传递这种资源的某种表现层
- 客户端通过HTTP method对服务器端资源进行操作,实现“表现层状态转化”
常用请求头
- Accept:接收类型,表示浏览器支持的MIME类型。(关于MIME可以参考计网)
- Content-Type:客户端发送出去实体内容的类型
- Cache-Control:指定请求和响应遵循的缓存机制,如no-cache
- If-Modified-Since:对应服务器端的Last-Modified,用来匹配查看文件变动情况
- Expires:缓存控制,在这个时间内不会请求而是直接使用缓存
- Max-age:资源在本地缓存使用的时间,时间内不会请求,而是使用缓存
- If-None-Match:对应服务器端的ETag,用来匹配文件内容是否改变(非常精确)
- Cookie:由cookie并且同域访问时自动带上
- Referer:页面的来源URL(精确到详细页面地址)
- Origin:请求从哪里发起(只精确到端口),比Referer更尊重隐私
- User-Agent:用户客户端的一些必要信息
常用响应头
- Content-Type:服务端返回的实体内容的类型
- Cache-Control:指定请求和响应遵循的缓存机制,如no-cache
- Last-Modified:资源最后修改时间
- Expires:应该在何时认为文档以及过期从而不再缓存
- Max-age:客户端本地资源应该缓存多少秒,开启Cache-Control后有效
- ETAg:资源的特定版本标识符
- Set-Cookie:设置和页面关联的cookie,服务器通过这个头部将cookie传给客户端
- Server:服务器相关信息
- Access-Control-Allow-Origin:服务器端允许的请求Origin头部
缓存
cookie
Response中的Set-Cookie
http/2
HTTPS
在HTTP基础上进行了TSL/SSL加密
- 对称加密:加密解密使用同一密钥
- 非对称加密:加密和解密需要使用公钥私钥两个不同密钥
HTTPS在证书验证阶段使用非对称加密。数据传输阶段使用对称加密。