http介绍 | 青训营笔记

124 阅读2分钟

什么是http

  • Hyper Text Transfer Protocol 超文本传输协议
  • 应用层协议,基于TCP协议
  • 请求响应
  • 节点可拓展
  • 无状态

屏幕截图_20230121_201655.png

TCP协议的特点是:

  • 面向连接
  • 点对点(一对一)
  • 面向字节流,也就是说仅仅把上层协议传递过来的数据当成字节传输,为了实现TCP上述的特点,TCP需要解决的是面向连接(建立连接和关闭连接的方式),错误传输(确认错误和重传),流量控制(发送方和接收方的传输速率协调),拥塞控制四个方面 无状态:没有记忆能力,每个请求都是独立的

协议分析

协议发展

屏幕截图_20230121_202613.png

HTTP/1.1 1997年
HTTP2 2015年 16年68%都是HTTP2

报文

屏幕截图_20230121_203056.png

Method

屏幕截图_20230121_203135.png

fetch默认方法是GET,常用方法大多是POST和GET
请求操作有safe和idempotent(幂等)类型

  • safe,不会修改服务器数据的方法(GET,HEAD,OPTIONS)
  • idemoptent,同样的请求执行一次和连续执行多次下效果是一样的,服务器的状态也是一样的,所有safe方法都是idemoptent的(GET,HEAD,PUT,OPTIONS.DELETE)

状态码

屏幕截图_20230121_203959.png

code一般通过response.status获取,只要code值在200~300之间均为相应成功。

RESTful API

屏幕截图_20230121_204457.png

请求头&响应头

屏幕截图_20230121_204717.png

屏幕截图_20230121_204724.png

前端再在向服务器发送请求时常常在headers中添加Content-Type标明上传的数据类型 Cookie常用于同源访问和保存登录状态

缓存

屏幕截图_20230121_205129.png

屏幕截图_20230121_205152.png

cookie

屏幕截图_20230121_205509.png

HTTPS

HTTP基础上通过TSL/SSL加密

屏幕截图_20230121_205710.png

静态资源

  • 前端的固定页面,不需要程序处理直接就能访问,效率高
  • 实现方案:缓存+CDN+文件名hash

屏幕截图_20230121_210051.png

跨域

跨域是由浏览器的同源策略产生的一种自卫行为。
一个URL由协议protocol / 主机host / 端口port组成,这三部分都相同时为同源。当前url和请求url不同源时就会产生跨域。

跨域解决方案:

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

屏幕截图_20230121_210319.png

保存登录状态

屏幕截图_20230121_210628.png

适合使用JWT的场景

  • 有效期短
  • 只希望被使用一次,比如,用户注册后发一封邮件让其激活账户,通常邮件中需要有一个链接,这个链接需要具备以下特性:能够标识用户,该连接具有时效性(通常只允许几小时内激活),不能被篡改激活其他可能的账户,一次性的。这种场景就适合JWT,而且由于JWT的一次性,单点会话和登录非常不方便,session有许多成熟的框架可以使用,JWT还需要自己实现逻辑

SSO单点登录

屏幕截图_20230121_211644.png

用户体验

网络优化

屏幕截图_20230121_211820.png

稳定性

屏幕截图_20230121_211825.png

通信方式

WebSocket

屏幕截图_20230121_211932.png

QUIC

屏幕截图_20230121_211938.png