[字节青训营]前端方向Day18 - 前端入门 - 理论篇 - HTTP | 豆包MarsCode AI刷题

55 阅读5分钟

前端入门 - 理论篇

一、协议分析—报文

1.1 Method

  • GET 读请求,获取资源请求
  • POST 提交请求
  • PUT 已有载体的替换
  • DELETE 删除
  • HEAD (少) 与GET几乎一致 但是没有响应体
  • CONNECT(少) 建联的过程
  • OPTIONS 通信选项的前置请求
  • TRACE 做测试
  • PATCH 做修改

1.2 Method的安全与幂等

  • Safe :不会修改服务器的数据的方法 GET HEAD OPTIONS

  • Idempotent(幂等) :同样的请求执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。

    所有Sage的方法都是Idempotent的。GET HEAD OPTIONS PUT DELETE

2 状态码

  • 1xx(少) 接收到请求 需要继续去处理

  • 2xx 成功 200 OK

  • 3xx 重定向,需要有进一步操作才能完成

    • 301 永久重定向
    • 302 临时重定向
  • 4xx 客户端有错误

    • 401 未授权
    • 404 请求了一个错误的目标地址
  • 5xx 服务器端错误

    • 500 服务器有一些错误,但是具体是什么错误是不明确的
    • 504 网关超时了

3 RESTful API

  • 一种API设计风格;Representational State Transfer 表现层状态转化

image.png

4 常用请求头

  • Accept 表示要去接收什么类型的资源(对应server的Content-Type)

  • Content-Type 发送的实体内容的类型

  • Cache-Control

  • If-Modified-Since

  • Expires

  • Max-age

  • If-None-Match

  • Cookie HTTP请求是一个无状态的请求,但是实际中我们希望让HTTP带有状态信息。

    • 有cookie并且同域访问时会自动带上
  • Referer 表示请求来源相关的字段,该页面的来源URL

  • Origin 表示请求来源相关的字段,最初的请求是从哪里发起的,只会精确到端口

  • User-Agent 存储了一些客户端的信息,比如说当前请求是从IOS发送的,还是...发送的

5 常用响应头

  • Content-Type 表示返回的实体内容的类型
  • Cache-Control
  • Last-Modified
  • Expires
  • Max-age
  • Etag
  • set-Cookie 告诉浏览器设置哪些cookie信息,以及这些cookie信息有哪些权限控制
  • Server 服务器的一些相关信息
  • Access-Control-Allow-Origin s erver允许哪些Origin头来请求接口

6 缓存

  • 强缓存 资源如果本地有了,直接用就好了

    • Expires,到期时间

    • Cache-Control

      • 可缓存性

        • no-cache 协商缓存验证
        • no-store 不适用任何缓存
        • public
        • private
      • 到期

        • max-age 单位是秒 请求从接收到开始多长时间之后才会过期,存储的最大周期
      • 重新验证,重新加载

        • must-revalidate 一般与max-age一起用,表示说一旦资源过期,必须要与服务器通信一下,看看缓存是不是新的可用的。

          浏览器与server断网了,如果没有设置must-revalidate,本地有缓存的话,断网的情况下是可以用的,但是如果设置了must-revalidate,断网之后就算本地有缓存也是不可以用的。

  • 协商缓存 本地有一份缓存,但是缓存能不能用,是不是最新的,需要跟server端做一个通信,彼此去验证一下。

    • Etag(response)/If-None-Match(request) 类似于指纹 ‘字符串’呈现 资源的标识符
    • Last-Modified(response)/If-Modified-Since(request) 最后修改时间

image.png

7 cookie

Set-Cookie - response 是server返回的,浏览器设置的一些cookie信息(键值对)

  • Expires=Date Cookie的有效期
  • Path=Path 限制指定Cookie的发送范围的文件目录,默认为当前
  • Domain=domain Cookie是在哪些域名下才会生效,默认为创建cookie的服务域名
  • secure 仅在HTTPS安全连接时,才可以发送Cookie
  • HttpOnly JS里有API可以获取Cookie,有Cookie泄露的风险,如果设置HttpOnly,JS无法获取Cookie
  • SameSite=[None|Strict|Lax] 同站策略 防范跨站脚本攻击

二、协议分析—发展

1.HTTP/2:更快、更稳定、更简单

  • 帧(frame) : HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
  • 二进制
  • 消息:逻辑上能和请求或者响应消息对应起来的一系列帧聚合在一起,称之为消息
  • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。
  • 交错发送,接收方重组织

image.png

HTTP/2基于TCP,TCP需要有建立连接的过程。对于之前的HTTP,如果Client进行请求每次都创建一个连接,消耗是很大的。

  • HTTP/2连接都是永久的,而且仅需要每个来源一个连接
  • 流控制 阻止发送方向接收方发送大量数据的机制(在浏览器看电影,看到第10分钟,暂停了,那么浏览器就不会继续缓存了)
  • 服务器推送

    client请求一个page.html 在该html中有script.js和style.css,为了加快处理效率,server可以提前把两个文件push给client。有一个主动推送信息给client的能力。

image.png

2.HTTPS概述

  • 经过TSL/SSL加密
  • 对称加密:加密和解密都使用同一个密钥
  • 非对称加密:加密和解密都使用不同的密钥

三、场景分析—静态资源

image.png

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

image.png

1.静态资源部署

把静态资源放在CDN(Content Delivery Network)上。

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

image.png

Q:用了缓存,能保证用户快了,怎么保证用户拿到的够新?

A:在文件名上做手脚 能够让用户保证每次访问的时候一定是最新的

image.png

四、场景分析—登录

image.png

image.png

image.png

对于上图中,三部分,如果有不同,则认为是跨域请求。

image.png