HTTP学习笔记

推荐教程:https://juejin.cn/post/6844903673680789517

HTTP全称 超文本传输协议(HyperText Transfer Protocol),是一种用于在网络上进行数据传输的协议,可以通俗理解为 这是电脑与电脑之间的沟通方式,主要用于网页上。

HTTP的组成和基本概念

  • 客户端和服务器:HTTP 通常工作在客户端(如网页浏览器)和服务器之间。客户端向服务器发送请求,服务器处理请求并返回响应。
  • 请求和响应:HTTP 的工作方式基于请求-响应模型。客户端发送一个请求(包括请求行、请求头和请求体),服务器处理请求并返回一个响应(包括状态行、响应头和响应体)。

示例:http://www.google.com

http定义了选择的协议方式 www.google.com 则对应需要访问的ip地址

ip地址可以理解为每个人的家庭住址

过程:当我们在浏览器上输入一段网址后,浏览器就会发送请求到服务器,服务器接受请求后回传数据,这个数据经过电脑处理后就会返回我们通常看到的网页。

❗️ 并不是只有网址才会触发请求

例如在购物平台购物时,当点击购物按钮时,就已经隐匿地向服务器发送了请求,此时架构是在应用中实现

HTTP 方法

HTTP 定义了一些常见的方法来执行不同的操作,包括:

  • GET:获取资料,通常用于从服务器获取数据。
  • POST:上传资料,用于创建或更新资源。
  • PUT:更新指定的资源。
  • DELETE:删除指定的资源。
  • PATCH:覆盖资料

:star: 区别GET和POST方法:

特性 GET POST
目的 从服务器获取数据或资源 向服务器提交数据以处理或存储
数据位置 数据附加在 URL 的查询字符串中 数据放在请求体(Body)中
数据量 数据量有限,受 URL 长度限制 数据量没有严格限制,可以传输大量数据
安全性 数据暴露在 URL 中,相对不安全 数据不暴露在 URL 中,相对较安全
缓存 请求可以被缓存 请求一般不被缓存
书签 URL 可以被书签保存 URL 不适合直接书签
适用场景 获取资源或数据,如读取页面或搜索内容 提交表单、上传文件、修改或创建资源
示例请求 GET /page?name=value POST /submit
Content-Type: application/x-www-form-urlencoded
name=John&age=30

HTTP报文

报文就是客户端和服务器之间沟通所需要遵循的格式

  • 请求结构

    • 请求行:包含请求方法(如 GET、POST)、请求目标(如 URL)和 HTTP 版本。

    • 请求头:包括客户端环境的信息,如浏览器类型、语言等。

    • 请求体:包含需要发送给服务器的数据。

    :star2:示例http://api/shop.com/card

    POST /card HTTP/1.1  *请求行
    ---
    Host:api.shop.com *传送的目标地址与请求行组合成网址
    User-Agent:Mozila/5.0(windows...)Chrome *请求的发送地址
    Accept:text/plain *可接受的回传档案类型
    Content-Type:text/plain *传送的档案类型
    Con-Length:43 *内容长度
    ---
    {"card":1234567890."total_price":8787} *内容=>可以推断为刷卡的请求
  • 响应结构:

    • 状态行:包含 HTTP 版本、状态码(如 200、404)和状态消息。
    • 响应头:包含服务器的信息和响应的元数据,如内容类型、长度等。
    • 响应体:实际返回给客户端的数据,如网页内容、图片等。

    :star2:示例:

    HTTP/1.1 200 OK
    ---
    Server:nginx *服务器软体类型
    Content-Type:text/plain *回传信息的类型
    Content-Length:7 *回传信息的长度
    Date:Fri,27 Aug 2021 20:09:07 GMT *回传回去的时间
    ---
    success

:eyes:因此我们可以将请求和相应简单理解为两个人在相互写信,当然写信是需要遵循信的格式的 !

HTTP 状态码

HTTP 状态码用于表示请求的结果,常见的状态码包括:

  • 200 OK:请求成功,服务器返回请求的数据。
  • 201 Creat: 创建成功
  • 301 Moved Permanently:请求的资源已被永久移动到新位置。
  • 400 Bad Request: 发送的格式错误力
  • 401 Unauthorized:请求的资源比较敏感,需要验证
  • 403 Forbidden: 验证身份不合格
  • 404 Not Found:请求的资源未找到。
  • 500 Internal Server Error:服务器内部错误,无法完成请求。

HTTP与HTTPS的主要区别

  • HTTP 是明文传输的,传送的资料都可以被看见,这意味着数据在传输过程中可能被第三方窃听或篡改,非常的不安全。
  • HTTPS(HyperText Transfer Protocol Secure超文本传输安全协议)是在 HTTP 的基础上加上了 SSL/TLS 加密层,提供了加密和安全性,保护数据在传输过程中不被窃取或篡改,比较安全,也是目前的主要传输方式。