Http知识点汇总

119 阅读3分钟

http缓存

  • exprise
    表示过期时间,将系统时间和exprise比较,没有超时则使用缓存数据
  • cache-control
    有效时间,超过间隔时间则重新请求
  • ETag/If-None-Match
    一串hash码,代表的是一个资源的标识符,hash值变化则重新请求
  • Last-Modified/If-Modified-Since
    文件的最后修改时间,超时重新请求 image.png

cache-control属性

  • public 服务器,代理服务器都可以对返回内容进行缓存
  • private 只有发起请求的浏览器可以缓存
  • no-store 本地和代理服务器都不缓存,每次都重新请求
  • no-cache 可以本地缓存,每次发起请求向服务器验证,才允许使用缓存
  • max-age 设定多少秒过期,过期之后才会再次请求

cookie属性

  • domain:在哪个域有效
  • path:cookie有效的路径
  • httpOnly:为true时禁止js读取和修改cookie,可以防止xss
  • SameSite:限制使用第三方cookie
    • strict 仅允许一方请求携带 Cookie,即浏览器将只发送相同站点请求的 Cookie,即当前网页 URL 与请求目标 URL 完全一致。
    • Lax(chrome80之后默认值) 允许部分第三方请求携带 Cookie
    • None 无论是否跨站都会发送 Cookie

常见状态码

  • 301:永久重定向
  • 302:临时重定向,直接使用GET方法访问URI
  • 307:临时重定向,不允许将请求方法从post改为get
  • 304:从缓存中读取(协商缓存)
  • 400:请求报文错误
  • 401:token超时
  • 403:无权限,禁止访问
  • 502:网关错误
  • 503:服务器维护或过载

http 1.1/2.0/3.0

http 1.1 keep-alive

http 1.1默认开启keep-alive,http连接关闭,tcp连接不会立刻关闭,也就是一个tcp连接可以多次请求一个接口,且同一时刻只有一个http请求

http 2.0

  • 二进制分帧
  • 多路复用 将http消息分为独立帧,交错发送然后重新组装,在同一个tcp连接中同时发送多个请求和响应
  • 头部压缩 首先在http2.0中使用首部表键值对,不再每次请求和响应发送,首部表在http2.0中始终存在,客户端和服务端共同维护更新,只发送差异数据。
  • 服务器推送

管线化(http1.1): 管线化可以在同一个tcp连接上发送多个请求,不必等待返回,但是必须按照发送顺序返回,因此会有对头阻塞。
多路复用(http2.0):在同一个tcp连接上乱序发送多个请求,乱序返回,多路复用是基于帧,流的传输,所以可以乱序,在http2.0之前是基于文本的,所以不能乱序,解决了对头阻塞的问题。

image.png

http 3.0

基于udp:减少了握手的成本。
多路复用:http2.0解决了http连接的队头阻塞问题,但是tcp连接同样会有队头阻塞,http3.0基于udp解决了这个问题。
目前使用较少,在手机app中有使用,web端几乎没有。

image.png

DNS解析过程(待补充)

  • 浏览器缓存
  • 本地host缓存
  • 路由器
  • 顶级域名服务器->根服务器

递归查询和迭代查询

参考链接

图解 HTTP 缓存
巩固你的HTTP知识体系
6张图从HTTP/0.9进化到HTTP3.0
多张图带你彻底搞懂DNS域名解析过程