应用场景
静态资源
缓存 + CDN + 文件名 hash
缓存:通过如 Cache-Control 的方法设定缓存的时间,如 max-age=31536000 则表示缓存时间最多为一年
CDN (Content Delivery Network):通过用户就近性和服务器负载的判断,CDN 确保内容以一种极为高效的方式为用户请求提供服务
文件名 hash:当静态资源文件有变的时候更改文件名或者根据 hash 的变化等方式,让每次用户重新请求的时候,如果文件 match 不上缓存的,就会重新申请
登录场景
在表单登录或者扫码登录等场景,通过发生请求和接收返回的信息实现用户校验和各种操作
跨域
当需要跨域请求的时候,我们会使用 Method:OPTIONS
一个地址一般来说由三个部分组成 scheme (如: https)、host name (如: www.baidu.com) 和 port (如: 443),当这三个部分有任何一个部分不一样的时候就可以用 cross-origin 表示
- 注:http 的默认 port 是 80,而 https 的默认 port 是 443
跨域解决措施
CORS (Cross-Origin Resource Sharing)
- 当有跨域请求的时候,会先发起一个预请求,去询问服务端是否允许跨域资源
- 若允许,服务端根据允许的跨域请求的策略对请求进行匹配
- 匹配成功,再发起真实的请求
代理服务器
- 通过部署与当前域名处于同域下的代理服务器
- 当想要请求时先请求代理服务器,从而避免跨域的问题
- 再由代理服务器请求服务器的数据
登录请求过程
request:使用 POST 方法向目标域名下的目标路径发送请求,携带 Post body、希望的数据格式以及已有 cookie
response:符合数据格式的数据和一些 set-cookie 等
鉴权
- Session + cookie
由浏览器向服务器发送请求,服务器校验信息是否正确,如果正确则生成 session 并通过 set-cookie 将 session 设置到当前域名下面,当下一次请求时则会携带 session 发送,cookie 根据匹配实现
- JWT (JSON web token)
由浏览器向服务器发送请求,服务器校验信息是否正确,如果正确则生成 token 并且返回浏览器,下一次发送请求可以同通过将 token 放到请求头 (Authorization) 里的方法传给服务器
单点登录 SSO (Single Sign Onload)
- 用户访问 a,a 校验用户登录态,发现用户未登录,则跳转至 sso 认证
- sso 认证中心校验用户未登录,将用户引导至登录页面
- 用户输入用户名密码提交登录申请
- sso 认证校验用户信息,通过则在 sso 站点种下 cookie
- sso认证携带 cookie 重定向请求到 a,在 a 种下 cookie
- 当在 a 与服务器通信时检测到 cookie 则校验为有登录态,即可拿到数据
- 当再去访问 b 时,b 校验用户登录态,发现用户未登录,则跳转至 sso 认证
- sso 认证校验 cookie,发现用户已有登录态
- sso认证携带 cookie 重定向请求到 b,在 b 种下 cookie
- 当在 b 与服务器通信时检测到 cookie 则校验为有登录态,即可拿到数据