HTTP实用指南||字节青训营

32 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

什么是HTTP、其基本特点
  1. Hyper Text Transfer Protocol 超文本传输协议
  2. 应用层协议,基于TCP协议
  3. 请求,响应
  4. 简单可扩展
  5. 无状态
HTTP发展
  1. HTTP/1.0(构建可扩展性):增加了Header,有了状态码,支持多种文档类型
  2. HTTP/1.1(标准化协议):连接复用、缓存、内容协商
  3. HTTP/2(更优异的表现):二进制协议、压缩header、服务器推送
协议分析——报文
  1. Method:

    Method
    GET:请求一个指定资源的表示形式,使用GET请求应该只被用于获取数据
    POST:用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
    PUT:用请求有效载荷替换目标资源的所有当前表示
    DELETE:删除制定的资源
    HEAD:请求一个与GET请求的响应相同的响应,但没有响应体
    CONNECT:建立一个到由目标资源标识的服务器隧道
    OPTIONS:用于描述目标资源的通信选项
    TRACE:沿着到目标资源的路径执行一个消息环回测试
    PATCH:用于对资源应用部分修改
    1. safe(安全的):不会修改服务器数据的方法 GET HEAD OPTIONS
    2. Idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有safe的方法都是Idempotent的 GET、HEAD、OPTIONS、PUT、DELETE
状态码
  1. 200 :OK-客户端请求成功
  2. 301:资源(网页等)被永久转移到其他URL
  3. 302:临时跳转
  4. 401:Unauthorized-请求未经授权
  5. 404:请求资源不存在,可能是输入了错误的URL
  6. 500:服务器内部发生了不可预期的错误
  7. 504:Gateway Timeout-网关或者代理的服务器无法在规定的时间内获得想要的响应
RESTful API
  1. RESTful API:一种API设计风格;REST 表现层状态转化

  2. 遵循以下几点

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

    1. Expires 时间戳

    2. Cache-Control

      1. 可缓存性:no-cache:协商缓存验证

      no-store:不使用任何缓存

      1. 到期:max-age:单位是秒,存储的最大周期,相对于请求的时间
      2. 重新验证*重新加载:must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用
  2. 协商缓存:

    1. Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
    2. Last-Modified/If-Modefied-Since:最后修改时间
Cookie

image-20220802172815802

HTTP2 概述:更快,更简单,更稳定
  1. 帧(frame):HTTP2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
  2. 消息:与逻辑请求或响应消息对应的完整的一系列帧。
  3. 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
  4. HTTP2连接都是永久的,而且仅需要每个来源一个连接
  5. 流控制:阻止发送方向接收方发送大量数据的机制。
  6. 服务器推送
HTTPS
  1. 经过TSL/SSL加密
  2. 对称加密:加密和解密都是使用同一个密钥
  3. 非对称加密:加密和解密需要使用两个不同的密钥,公钥和私钥
静态资源
  1. 静态资源方案:缓存+CDN+文件名hash
  2. CDN:内容分发网络,通过用户就近性和服务器负载的判断
跨域解决方案
  1. CORS:跨域资源共享

    1. 预请求:获知服务端是否允许该跨源请求(复杂请求)
  2. 代理服务器:同源策略是浏览器的安全策略,不是HTTP的

  3. Iframe:诸多不便、

鉴权
  1. Session+Cookie:登录成功后会发起一个请求,把当前的账户名密码等信息提交给server,server收到信息后处理验证正确性,如果是正确的,server会生成一个session并在本地存储起来,同时Server会在返回请求时把session借由set-Cookie放到相应的域名和地址下面,下一次访问时,浏览器自动携带Cookie的策略会将session携带到server,server经过比较解析可以判断出用户的身份
  2. JWT(JSON web Token):提交请求后server会生成一个token,server将token放置在response中返回给浏览器,浏览器再次访问时server会把token解析出来

\