HTTP笔记


HTTP 笔记

参加字节跳动的青训营时写的笔记。这部分是杨超男老师讲的课。

1. 简介

  • 超文本协议(Hyper Text Transfer Protocol)

特点

  • 应用层协议,基于 TCP 协议
  • 请求响应:遵循客户端-服务端模型,客户端打开一个连接发出请求,然后等待服务器响应
  • 简单可扩展
  • 无状态

2. 发展

image-20220120171110994

3. 请求方法

方法 解释
GET 请求一个指定资源的表示形式,用于获取数据
POST 用于将实体提交到指定的资源。会导致在服务器上的状态变化或副作用
PUT 对服务器的数据进行修改。与 POST 方法的区别是 POST 方法侧重于数据的增加,而 PUT 方法侧重于数据的修改
DELETE 删除指定的资源
HEAD 类似 GET,不过没有响应体
CONNECT 建立一个由目标资源标识地服务器的隧道
OPTIONS 用于描述目标资源的通信选项(比如预请求允不允许跨域请求跨域请求)
TRACE 沿着到目标资源的路径执行一个消息环回测试,主要用于测试
PATCH 对资源应用部分修改
  • 安全:不会修改服务器的数据的方法
    • GET
    • HEAD
    • OPTIONS
  • 幂等:同样的请求被执行一次与连续执行多次的效果一样,服务器的状态也一样。所有安全的请求方法都是幂等的。
    • GET
    • HEAD
    • OPTIONS
    • PUT
    • DELETE

4. 状态码

状态码 解释
1xx 指示信息。表示请求已接收,继续处理
2xx 成功。表示请求已被成功接收、理解、接受
3xx 重定向。表示要完成请求必须进行更进一步的操作
4xx 客户端错误。表示请求有语法错误或请求无法实现
5xx 服务器错误。表示服务器处理请求时发生内部错误

5. 报文

示例:

image-20220120171634175

5.1 请求报文

  • 请求行:说明请求类型、要访问的资源以及 HTTP 版本

  • 请求头:说明服务器要使用的信息,如 HOST 表示请求的主机名,User-Agent 表示

    请求的浏览器类型等

  • 空行:必须,即使请求数据为空,也必须要有空行。空行的作用是用来通知服务器

    请求头已经结束,接下来是请求数据部分

  • 请求数据:请求数据是在 POST 方法中使用,而不是在 GET 方法中使用,因为 GET 方法的请求数据在 URL 中。

5.2 响应报文

  • 状态行:由 HTTP 协议版本号、状态码、状态消息三部分组成
  • 响应头:说明客户端要使用的信息,如 Date 表示生成响应报文的日期和时间,Content-Type 表示返回的内容的内容类型以及编码类型
  • 空行:必须,即使响应报文主体为空,也必须要有空行。空行的作用是用来通知客户端响应头已经结束,接下来是响应正文部分
  • 响应正文:服务器返回给客户端的文本信息

5.3 常用请求头

image-20220120180206746

5.4 常用响应头

image-20220120180305049

5.5 缓存

  • 强缓存
    • Expires
    • Cache-Control:可缓存性
      • no-cache:协商缓存验证
      • no-store:不使用任何缓存
    • max-age:到期。单位是秒,存储的最大周期
    • must-revalidate:重新验证、重新加载。一旦资源过期,在成功向原始服务器验证之前,不能使用
  • 协商缓存
    • ETag/If-None-Match:资源特定版本的标识符
    • Last-Modified/If-Modified-Since:最后修改时间

image-20220120210942019

image-20220120210132326

6. 发展

6.1 HTTP/2

更快、更稳定、更简单

  • HTTP/2 连接都是永久的,每个来源只需一个连接
  • 流控制:阻止发送方向接收方发送大量数据的机制
  • 服务器推送(可选):收到 html 后,里面用到的 css、js 可以在客户端发送请求前主动推送给客户端(预判)

6.2 HTTPS

经过 TSL/SSL 加密

  • HTTPS:默认端口 443

  • HTTP:默认端口 80

7. RESTful API

image-20220120175816312

8. 场景

8.1 跨域

  • CORS:先发送预请求,查看服务器是否允许该跨域请求

    image-20220120212928435

    相关协议头

    image-20220120213000877

  • 代理服务器:原理:同源策略是浏览器的安全策略,不是 HTTP 的

    image-20220118155230783

8.2 登录

image-20220120212010182

9. 优化

image-20220120212241150


文章作者: 赤蓝紫
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 赤蓝紫 !
评论
  目录