这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
初始http
01 初始http
地址栏字符串-呈现页面
应用层http相关信息
基于传输层中的tcp协议(TCP、ADP)做的一个协议
- 每一个http分为请求-语义简单、响应两个部分
- 简单可扩展:自定义header...
- 无状态:每一个请求都是孤立的、当前请求不知道之前的状态
02协议分析
发展
- 0.9版本:最初始简单的协议
- 之后越来越丰富、增加承载的类型
http2:传输更快 更稳
协议结构-每一部分
-Requests和Responses 结构一样
Method
有些方法是安全的,从服务器角度。
状态码
401:请求没有携带权限信息,或者信息有错
REST:表现层状态转化
请求与响应里一些常见的请求头
-
http是无状态,利用Cookie字段自动带上状态,有权限的cookie会自动带上-
用户是否登录? -
User-Agent:例如从安卓、pc发送的还是别的?
- Content-Type:有可能css/html...
- Access-Control-Allow-Origin:允许请求接口的Origin头部
缓存分为两类
强缓存:资源本地有了,直接用
- Expires:到期时间-具体的
- Cache-Control:请求是否可以缓存
- no-cache:可以协商缓存,但是需要用强缓存验证
协商: 本地有,但不清楚能不能直接用,需要与server端通信确认下。
- Etag基本都是字符串
- Last-Modi..:响应
- If-Modified...:请求
缓存优先级-过程
cookie
http/2概述
-
http/1传输的完整的信息 -
HTTP/2用的是帧的方式 -
2进制比文本传输效率更高,也添加了一些压缩算法
不需要按顺序,可以并行或者串行发送,接收方接收到再重新组织
提高效率。
每一个目标和来源地址连接后,是永久的。链接复用性
-
流控制:主动性:主动拒绝server大量数据请求。例如:看视频、时间比较长-数据量比较大,若视频暂停了,不再继续缓存,将资源让给其他优先级更高的信息处理部分。
-
服务器推送:主动推送能力
-
需要视情况而定使用这些能力。
https:比http多了一个加密,更安全
对称加密和非对称加密混。
03场景分析-真实的线上case
200的状态码是一定有真实的网络请求?from cache-从本地缓存拿到的响应,没有大的链路。
静态资源有什么部署方案?
- 加快加载速度。
- CDN:就近策略,若最近的没有,则一步步回源上去。
强缓存: 一年,够快了,但如何保证拿到的是最新。
- 因此在文件名做手脚,就每次变化时候就改变文件名-版本号、hash。保证用户每次刷新的时候是最新的资源。
登录
表单登录和扫码登录
处理跨域请求-options应用
区别跨域
这三部分有区别都认为跨域-scheme..
CORS
只有在复杂请求才会预请求。大部分
代理服务器-应用较多
webpack应用:本地调试怎么访问线上资源?等
场景分析-登录
- content-type:json、
- Request中content-type:form
- accept:接受格式是一样的
下一次刷新还可以记录登录的刷新
涉及鉴权方案:大部分是第一个方案
-
登录后发起提交请求给server,判断正确生成session存储起来,借setcookie,种到这个域名、地址。下一次浏览器带着cookie策略。与server比较。
-
JWT:server生成一个token有一些固定格式,不存储直接返回给浏览器里面。下一次请求里面放在header里面。发给server解析验证后发回给浏览器。-优点:唯一性,登录时间较短的时候、首次注册找回密码的时候邮箱发邮件点击链接。
发文章
**sso:**子应用做到信息共享:是大应用的一部分
04 实战
发起http协议
劫持:商家广告等。。