HTTP报文-ACCEPT & CONTENT-TYPE
Accept(请求头):代表客户端希望接收到的数据类型
Content-Type(响应头):返回的资源类型和编码
*通配符 */*为任意类型
q:相对品质因子 权重 从0到1的范围指定优先顺序 没有指定 质量值默认为q=1 如赋值为0 则提醒服务器该内容类型不被浏览器接受
Accept-Language:表示浏览器支持的语言
zh-CN,en-US,en: 表示浏览器支持的语言是 简体中文 其次是美国英语 再其次是其他形式的英语
Content-Language: 说明返回资源的语言类型 例如:zh-CN
Accept-Encoding:浏览器可以接受的资源编码格式(压缩格式)
Content-Encoding:服务器返回资源的编码格式(压缩格式 优化传输内容的大小)
浏览器缓存
把已请求并返回的web资源(HTML js等)复制成一个副本储存在浏览器的缓存中
缓存的好处:
- 减少网络带宽的消耗
- 降低服务器压力
- 减少网络延迟
Pragma:no-cache 值浏览器忽略资源缓存副本 每次访问需要到服务器获取
http1.0中字段 http1.1用Cache-Control代替(HTTP向下兼容 所以很多网站依然有这个字段)
Cache-Control
no-cache:表示忽略缓存 强制到服务器获取数据(浏览器依旧缓存)
no-store:强制缓存在任何情况下都不要保留任何副本
max-age:表示缓存副本的有效时长 从请求时间开始到过期时间之间的秒数
public:表面响应可以被任何对象(包括发送请求的客户端 代理服务器 等等)缓存
private:表明响应只能被单个用户缓存,不能作为共享缓存(代理服务器不能缓存)
画个小丑图感受下浏览器缓存的简单流程
Referer
告诉浏览器,当前页面是从哪个页面链接过来的
好处: 可通过Referer分析不同渠道的流量分布,用户搜索的关键词
应用场景:
- 资源防盗链-服务器拉去资源之前判断referer是不是自己的域名或者IP,如果不是就拦截,如果是则拉取资源
HTTP版本
- HTTP/0.9
-
- 仅支持GET请求
- 仅能请求访问HTML格式的资源
- HTTP/1.0
-
- 增加POST和HEAD请求方式
- 支持多种数据格式的请求与访问
- 支持cache缓存
- 新增状态码 多字符集支持 内容编码等
- 早期HTTP/1.0 不支持keep-alive长连接 只支持串行连接
- 后期HTTP/1.0增加Connection:keep-alive字段(非标准字段 需要手动加)开始支持长连接
- HTTP/1.1
-
- 增加持久连接(默认开始Connection:keep-alive)
- 增加管道机制(支持多个请求同时发送)
- 增加PUT/PATCH/OPTIOJN/DELETE发送
- 增加Host字段(指定服务器域名)
- 增加100状态码(Continue支持只发送头信息
- 增加身份认证机制
- 支持传送内容的一部分和文件断点续传
- 新增24个错误状态码
- HTTP/2.0
-
- 增加双工模式(客户端同时发送多个请求 服务端同时处理多个请求)
- 服务端推送(服务器会把客户端需要的资源一起推送到客户端 合适加载静态资源)
- 头信息压缩机制(每次请求都会带上所有信息发送给服务端 HTTP协议不带状态)
- 二进制协议(头信息与数据体使用二进制进行传输)
- 多工(先发送已处理好的部分 再响应其他请求 最后再解决没有处理好的部分)