HTTP 应用 | 青训营

126 阅读3分钟

应用场景

静态资源

缓存 + 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)
  • 当有跨域请求的时候,会先发起一个预请求,去询问服务端是否允许跨域资源
  • 若允许,服务端根据允许的跨域请求的策略对请求进行匹配
  • 匹配成功,再发起真实的请求
代理服务器

image.png

  • 通过部署与当前域名处于同域下的代理服务器
  • 当想要请求时先请求代理服务器,从而避免跨域的问题
  • 再由代理服务器请求服务器的数据

登录请求过程

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)

  1. 用户访问 a,a 校验用户登录态,发现用户未登录,则跳转至 sso 认证
  2. sso 认证中心校验用户未登录,将用户引导至登录页面
  3. 用户输入用户名密码提交登录申请
  4. sso 认证校验用户信息,通过则在 sso 站点种下 cookie
  5. sso认证携带 cookie 重定向请求到 a,在 a 种下 cookie
  6. 当在 a 与服务器通信时检测到 cookie 则校验为有登录态,即可拿到数据
  7. 当再去访问 b 时,b 校验用户登录态,发现用户未登录,则跳转至 sso 认证
  8. sso 认证校验 cookie,发现用户已有登录态
  9. sso认证携带 cookie 重定向请求到 b,在 b 种下 cookie
  10. 当在 b 与服务器通信时检测到 cookie 则校验为有登录态,即可拿到数据