HTTP实用指南(下)| 青训营笔记

87 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

上篇文章主要讲述了HTTP协议的基本定义、主要特征、协议发展历程和报文结构。而接下来这篇文章将继续介绍HTTP协议的应用场景以及实战。

一、应用场景分析

重点

  • 静态资源
  • 登录

静态资源

步骤:

  1. 打开chrome
  2. 输入https:/ /www.toutiao.com
  3. 打开控制台
  • 右键- ->检查
  • F12
  1. 切换到network

image.png

缓存策略是怎样的?

  • 强缓存
  • Cache control: 一年

还有什么信息吗?

  • 允许所有域名访问
  • 资源类型: css

image.png

静态资源方案: 缓存+ CDN +文件名hash

  • CDN : Content Delivery Network
  • 通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

image.png

登录

业务场景

  • 表单登录
  • 扫码登录

技术方式

  • SSO

image.png

  • 账号密码登陆
  • 打开控制台- network -勾选preserve log -过滤quick login
  • 观察请求

image.png

跨域

跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。

下面介绍一下跨域:

跨域 CORS ( Cross-Origin Resource Sharing )

  • 预请求:获知服务端是否允许该跨源请求(复杂请求) 相关协议头
  • Access-Control-Allow-Origin
  • Access-Control-Expose-Headers
  • Access-Control-Max- Age
  • Access-Control-Allow-Credentials
  • Access-Control-Allow- Methods
  • Access-Control-Allow-Headers
  • Access-Control-Request-Method
  • Access-Control-Request-Headers
  • Origin

image.png

那么遇到跨域问题,我们该如何解决呢?下面看解决方案:

  • CORS
  • 代理服务器
    • 同源策略是浏览器的安全策略,不是HTTP的
  • Iframe
    • 诸多不便

image.png

看完跨域,接下来我们回到登录继续看登录:

image.png

针对上面的两个问题,我们做出解决:

1.向什么地址做了什么动作?

  • 使用POST方法
  • 目标域名 https : //sso.toutiao.com
  • 目标path /quick login/v2/

2.携带了哪些信息,返回了哪些信息?

携带信息

  • Post body,数据格式为form
  • 希望获取的数据格式为json
  • 已有的cookie

返回信息

  • 数据格式json
  • 种cookie的信息

image.png 适合使用jwt的场景:

  • 有效期短
  • 只希望被使用一次

比如,用户注册后发-封邮件让其激活账户, 通常邮件中需要有一个链接, 这个链接需要具备以下的特性:能够标识用户,该链接具有时效性(通常只允许几小时之内激活), 不能被篡改以激活。其他可能的账户,一次性的。而由于jwt具有一次性的特性。单点登录和会话管理非常不适合用jwt,如果在服务端部署额外的逻辑存储jwt的状态,那还不如使用session。基于session有很多成熟的框架可以开箱即用,但是用jwt还要自己实现逻辑。

二、实战分析

下面看一下具体的例子:

浏览器

image.png

AJAXZ之Fetch

  • XMLHttpRequet的升级版
  • 使用Promise
  • 模块化设计,Response,Request,Header对象
  • 通过数据流处理对象,支持分块读取

image.png

Node

标准库:HTTP/HTTPS

  • 默认模块,无需安装其他依赖
  • 功能有限/不是十分友好

image.png 常用的请求库: axios

  • 支持浏览器、nodejs环境
  • 丰富的拦截器

image.png

三、拓展

通信方式

WebSocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • 典型场景:实时性要求高,例如聊天室
  • URL使用ws://或wss.//等开头

image.png QUIC : Quick UDP Internet Connection

  • 0-RTT建联(首次建联除外)。
  • 类似TCP的可靠传输。
  • 类似TLS的加密传输,支持完美前向安全。
  • 用户空间的拥塞控制,最新的BBR算法。
  • 支持h2的基于流的多路复用,但没有TCP的HOL问题。
  • 前向纠错FEC。
  • 类似MPTCP的Connection migration。

image.png

总结

今天通过对HTTP协议的应用场景的了解以及一些实例的了解。我知道了它在静态资源和登录方面的应用。以及对通信方面的了解,我知道了WebSocket的概念,在学习中我发现WebSocket使得客户端和服务器之间的数据交换变得更加简单,它为数据的传输又增加了便捷,大大增加了数据传输的效率。