HTTP | 青训营笔记

63 阅读3分钟

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

重点内容

  • http
  • https
  • 应用场景分析
  • http3

初识HTTP

当我们在地址栏填写一条url地址,发生了什么?

  1. 浏览器处理输入信息
  2. 浏览器发起请求
  3. 服务端接收请求
  4. 浏览器读取响应
  5. 浏览器渲染
  6. 页面加载完成

HTTP协议

HHTP是超文本传输协议,应用层协议基于TCP协议,他是简单可扩展的协议,他是无状态的协议。

目前已经推出了HTTP3。

常见的字段有METHOD。

Method

  • GET
  • POST
  • PUT
  • DELETE
  • HEAD
  • CONNECT
  • OPTIONS

不会修改服务的数据的方法是安全的:GET

幂等:同样的请求被执行一次和连续执行多次,得到的结果都是一样的。

状态码

  • 1xx:只是信息,表示请求已接收,继续处理
  • 2xx:成功,表示请求已被成功接收、理解、接受
  • 3xx:重定向,要完成请求必须进行更进一步操作
  • 4xx:客户端错误,请求有语法错误或请求无法实现
  • 5xx:服务器端错误,服务端未能实现合法的请求

RESTful API

他是一种API设计风格。

  1. 每一个URL代表一种资源
  2. 客户端和服务端之间,传递这种资源的某种表现层。
  3. 客户端通过HTTP method,对服务端资源进行操作,实现"表现层状态转化"

常见请求头

  • Aceept:接受类型
  • Content-Type:客户端发送出去实体内容的类型
  • Cache-Control:指定请求和响应遵循的缓存机制。
  • Cookie:有cookie会自动带上

常用响应头

  • Set-Cookie:设置和页面关联的Cookie
  • Content-Type:服务端

HTTP2

帧:http2最小通信单位,每个帧都包含帧头

消息:与逻辑请求或响应消息对应的完整的一系列帧。

数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。

交错发送,接收方重组织。

HTTP2连接是永久的,而且仅需要每个来源一个连接。

流控制:阻止发送方向接收方发送大量数据的机制。

服务器有主动推送能力,可以提前推送静态资源。

HTTPS

https = http + ssl

对称加密:加密和解密都是用同一个密钥

非对称加密:加密和解密都需要使用两个不同的密钥:公钥和私钥。

HTTP的应用场景分析

今日头条浏览器为例。

状态码200 一定发起了请求吗?

显然不一定,浏览器对于静态资源,会从本地缓存获取响应。

所以,在实际开发的过程中,我们往往发现自己修改了CSS却没有生效,这大概率是浏览器缓存的锅。

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

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

跨域

为什么有options请求?

跨域,oringin

当一个域名中:scheme、host name、port不同时即是跨域。

预请求:获取服务器是否允许该跨域请求(复杂请求)

鉴权

  • Session+Cookie
  • JWT

Websocket

  • 浏览器与服务器进行全双工通讯的网络技术
  • 实时性高

其他

QUIC:HTTP3的新特性