当前位置: 首页 > article >正文

HTTP 协议中请求与响应的详细解析


前言:HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在互联网上传输超文本的协议 --由一个请求和响应组成,一个完整的 HTTP 请求由请求行(Request Line)、请求头(Headers)和可选的请求体(Body)组成,一个 HTTP 响应由状态行(Status Line)、响应头(Headers)和响应体(Body)组成。


1 HTTP请求

Request Line<CRLF>Header-Name: header-value<CRLF>Header-Name: header-value<CRLF>//一个或多个,均以<CRLF>结尾<CRLF>body//请求正文

1.1 请求行

以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下
Method Request-URI HTTP-Version CRLF

1.1.1 请求方法

其中Method表示请求方法,主要有这些方法:

请求方法描述
GET请求获取由 Request - URI 所标识的资源
POST在 Request - URI 所标识的资源后附加新的数据
HEAD请求获取由 Request - URI 所标识的资源的响应消息报头
PUT请求服务器存储一个资源,并用 Request - URI 作为其标识
DELETE请求服务器删除 Request - URI 所标识的资源
TRACE请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT保留将来使用
OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求

** 使用场景**

  • GET :访问网页:当你在浏览器的地址栏输入一个 URL 并回车时,浏览器会向服务器发送一个 GET 请求,请求该 URL 对应的网页资源。例如,访问 https://www.example.com。
    搜索数据:在搜索引擎中输入关键词进行搜索时,浏览器会将关键词作为查询参数附加在 URL 后面,向服务器发送 GET 请求。例如,https://www.google.com/search?q=apple。
  • POST:用户在网站的注册或登录表单中输入用户名、密码等信息,点击提交按钮后,浏览器会向服务器发送一个 POST 请求,将用户输入的数据发送到服务器进行处理。
    上传文件:当用户在网页上选择一个文件并点击上传按钮时,浏览器会使用 POST 请求将文件数据发送到服务器。
  • HEAD :检查资源是否存在:在下载文件之前,可以先使用 HEAD 请求检查文件是否存在,以及文件的大小和修改时间等信息。
    缓存验证:浏览器可以使用 HEAD 请求检查服务器上的资源是否有更新,从而决定是否需要重新下载资源。
  • PUT方法:更新用户信息:用户在网站上修改自己的个人信息后,浏览器会使用 PUT 请求将更新后的信息发送到服务器,更新服务器上存储的用户信息。
    文件上传与替换:将本地的文件上传到服务器指定的位置,如果该位置已经存在文件,则替换该文件
  • DELETE 方法:删除用户账户:用户在网站上选择删除自己的账户时,浏览器会向服务器发送一个 DELETE 请求,请求服务器删除该用户的账户信息。
    删除文件:在文件管理系统中,用户选择删除某个文件时,系统会使用 DELETE 请求将该文件从服务器上删除。

其他三个不常用

1.1.2 Request-URI

**Request-URI(请求统一资源标识符)**是用于指定客户端所请求资源的字符串。它就像是在互联网这个庞大的资源库中定位特定资源的 “地址”,帮助服务器明确客户端想要获取或操作的具体内容 。

组成部分
  • 路径:这是 Request - URI 的核心部分,用于指定服务器上资源的具体位置。它以 “/” 作为分隔符,代表了资源在服务器文件系统或应用程序中的层级结构。例如,/products/list.html表示服务器上 “products” 目录下的 “list.html” 文件。
  • 查询字符串:位于路径之后,以 “?” 开头,由一系列键值对组成,用于向服务器传递额外的参数信息。多个键值对之间用 “&” 分隔。例如,/search?q=python&category=books中,“q=python” 和 “category=books” 是两个查询参数,分别表示搜索关键词为 “python”,搜索类别为 “books”。服务器可以根据这些参数来执行相应的搜索逻辑,返回符合条件的结果
  • 片段标识符(Fragment Identifier)以 “#” 开头,通常用于指定网页内的特定位置或元素。例如,/article.html#section2表示请求 “article.html” 页面,并定位到页面中 “section2” 标识的位置。不过,片段标识符通常不会被发送到服务器,而是由浏览器在客户端根据其指示进行页面内的导航操作
作用
  • 定位资源:服务器根据 Request - URI 来查找并返回相应的资源。它就像是资源的 “地址”,让服务器能够准确地找到客户端所请求的文件、数据或执行特定的操作。例如,客户端请求/api/users/123,服务器就会明白需要获取 ID 为 123 的用户信息。
  • 传递参数:通过查询字符串,客户端可以向服务器传递各种参数,以便服务器根据这些参数来定制响应。比如在搜索功能中,客户端通过 Request - URI 传递搜索关键词、排序方式、结果数量等参数,服务器根据这些参数进行相应的搜索和数据处理,然后返回符合要求的结果。
  • 支持 RESTful API:在 RESTful 架构的 API 中,Request - URI 被广泛用于表示不同的资源和操作。例如,GET /api/products可以表示获取所有产品资源,POST /api/products用于创建新的产品资源,PUT /api/products/123用于更新 ID 为 123 的产品资源,DELETE /api/products/123用于删除该产品资源。通过这种方式,Request - URI 不仅定位了资源,还暗示了对该资源要执行的操作,使得 API 的设计更加清晰和规范。

1.2.3 Version

“HTTP - Version” 表示客户端使用的 HTTP 协议版本",常见的有 HTTP/1.1、HTTP/2 .
例如,一个完整的 HTTP 请求行可能看起来像这样:
GET /index.html HTTP/1.1
GET” 是方法,“/index.html” 是 Request - URI,“HTTP/1.1” 是 HTTP 版本

1.2 请求头

请求头是 HTTP 请求消息中的一部分,位于请求行(包含方法、Request - URI 和 HTTP - Version)之后,请求体之前。它由一系列的键值对组成,用于向服务器传递关于请求的附加信息,例如客户端的身份、请求的资源类型、期望的响应格式等。以下是一些常见的请求头字段及其作用

1.3 请求体

请求体是 HTTP 请求消息中的一部分,位于请求头之后,通常用于向服务器发送额外的数据。以下是关于请求体的详细介绍:

通用请求头字段

  • Cache - Control:用于指定缓存相关的指令,如no - cache表示不使用缓存,max - age = 3600表示缓存有效期为 3600 秒。
  • Connection:用于指定连接的管理方式,如keep - alive表示保持连接,以便在多个请求之间重用连接,提高性能;close表示请求完成后关闭连接。
  • Date:表示请求发送的日期和时间。

请求实体头字段

  • Content - Type:指定请求体中数据的类型,如application/json、application/x - www - form - urlencoded、multipart/form - data等。
  • Content - Length:指定请求体的长度(以字节为单位)。
  • Content - Encoding:用于指定请求体的编码方式,如gzip、deflate等,表示请求体数据经过了相应的压缩算法处理。

客户端请求头字段

  • Accept:告诉服务器客户端能够接受的响应内容类型,如Accept: text/html, application/xhtml + xml, application/xml;q = 0.9, /;q = 0.8,表示客户端优先接受 HTML、XHTML 和 XML 格式的响应,其次是其他任意类型的响应。
  • Accept - Encoding:指定客户端能够接受的响应内容的编码方式,如gzip、deflate等,用于告知服务器可以对响应数据进行压缩以减少传输量。
  • Accept - Language:表示客户端期望的响应语言,如Accept - Language: en - US, en;q = 0.5,表示客户端优先接受美式英语,其次是其他英语变体。
  • User - Agent:包含了客户端的相关信息,如浏览器类型、版本、操作系统等,例如User - Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.138 Safari/537.36,服务器可以根据这个字段来为不同的客户端提供不同的响应或进行特定的处理。
  • Cookie:用于在客户端和服务器之间传递会话相关的信息。客户端会在请求头中包含之前从服务器接收到的 Cookie,服务器可以根据这些 Cookie 来识别用户身份、跟踪用户会话等。

1.3请求头

作用

  • 提交数据:最主要的作用是向服务器提交数据。比如在用户注册、登录、发表评论、上传文件等操作中,需要将用户输入的信息、文件内容等数据发送到服务器,这些数据就包含在请求体中。
  • 支持复杂操作:对于一些需要大量数据传输或复杂操作的场景,如提交表单数据、发送 JSON 格式的配置信息、上传二进制文件等,请求体提供了一种有效的方式来传递这些数据,使服务器能够根据这些数据进行相应的处理。

数据格式

  • 表单数据:通常在提交 HTML 表单时使用,数据以键值对的形式表示,例如username=john&password=123456。多个键值对之间用 “&” 分隔。这种格式适用于简单的文本数据提交。
  • JSON 数据:由于其轻量级和易于解析的特点,在现代 Web 应用程序中被广泛用于传递结构化数据。例如:
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
}
  • 二进制数据:用于上传文件,如图像、视频、文档等。在这种情况下,请求体包含的是文件的二进制内容,服务器需要根据文件类型和相关的处理逻辑来正确接收和保存这些数据。

相关请求头字段

  • Content - Type:该请求头字段用于指定请求体中数据的类型。例如,Content - Type: application/json表示请求体中的数据是 JSON 格式;Content - Type: application/x - www - form - urlencoded表示是表单数据;Content - Type: multipart/form - data用于文件上传,它允许在一个请求中同时上传多个文件和其他表单数据。
  • Content - Length:用于指定请求体的长度(以字节为单位)。服务器可以根据这个字段来确定何时接收完整个请求体的数据

实战

import requests# 目标URL
url = 'https://example.com/api/login'# 请求头
headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.138 Safari/537.36','Content - Type': 'application/json','Accept': 'application/json','Connection': 'keep - alive'
}# 请求体
data = {'username': 'your_username','password': 'your_password'
}# 发送POST请求
response = requests.post(url, headers=headers, json=data)# 打印响应状态码和内容
print(response.status_code)
print(response.text)

响应

状态行:

位于响应消息的第一行,包含 HTTP 版本、状态码和原因短语。例如,HTTP/1.1 200 OK,其中HTTP/1.1是 HTTP 协议版本,200是状态码,OK是原因短语。状态码表示服务器对请求的处理结果,常见的状态码有:

  • 2xx 成功:如200 OK表示请求成功,服务器已成功处理请求并返回了相应的资源;201 Created表示请求已成功,并且服务器创建了一个新的资源。
  • 3xx 重定向:如301 Moved Permanently表示请求的资源已被永久移动到新的 URL;302 Found表示请求的资源临时移动到新的 URL,客户端应使用新的 URL 再次发起请求。
  • 4xx 客户端错误:如400 Bad Request表示客户端发送的请求有误,服务器无法理解;401 Unauthorized表示客户端未提供有效的身份验证信息,访问被拒绝;404 Not Found表示服务器找不到请求的资源。
  • 5xx 服务器错误:如500 Internal Server Error表示服务器内部发生错误,无法完成请求;503 Service Unavailable表示服务器暂时无法处理请求,通常是由于服务器过载或正在维护。

响应头:

包含一系列键值对,用于提供关于响应的附加信息,例如:

  • Content - Type:指定响应体中数据的类型,如text/html表示 HTML 页面,application/json表示 JSON 数据,image/jpeg表示 JPEG 图像等。
  • Content - Length:指定响应体的长度(以字节为单位),以便客户端知道需要接收多少数据。
  • Cache - Control:用于指定缓存相关的指令,如public表示响应可以被任何缓存存储;private表示响应只能被客户端缓存;no - cache表示不允许缓存。
  • Set - Cookie:用于设置 Cookie,服务器通过这个字段将 Cookie 发送给客户端,客户端会在后续的请求中包含这些 Cookie。
  • Location:在重定向响应中,用于指定客户端应重定向到的 URL。

响应体

是服务器返回给客户端的实际数据内容,可以是 HTML 页面、JSON 数据、XML 数据、图片、视频等各种类型的数据,具体取决于Content - Type字段的设置。例如,如果请求的是一个网页,响应体中就包含了该网页的 HTML 代码;如果请求的是一个 API 接口,响应体可能包含 JSON 格式的业务数据。

通俗易懂

假设你去一家图书馆借书,你向图书馆管理员提出借书的请求,这个过程就好比是客户端向服务器发送 HTTP 请求。而图书馆管理员根据你的请求,给你相应的回复,这就类似于服务器给客户端的 HTTP 响应。
比如说,你走到图书馆服务台对管理员说:“我想借一本名为《西游记》的书。” 这就是你的请求。过了一会儿,管理员对你说:“好的,这是你要的《西游记》。” 同时,管理员还告诉你一些其他信息,比如 “这本书可以借一个月”“请爱护书籍” 等。这里,管理员说 “好的,这是你要的《西游记》” 就相当于 HTTP 响应中的响应体,是你真正想要的内容;而 “这本书可以借一个月”“请爱护书籍” 等信息就像是响应头,提供了关于这本书的一些附加信息。

相关文章:

HTTP 协议中请求与响应的详细解析

前言&#xff1a;HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于在互联网上传输超文本的协议 --由一个请求和响应组成&#xff0c;一个完整的 HTTP 请求由请求行&#xff08;Request Line&#xff09;、请求头&#xff08;Headers&…...

对三维物体模型的阈值操作

对三维物体模型的阈值操作 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头2. point_normal_x、point_normal_y、point_normal_z有什么区别&#xff1f;3. 去除离群点 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头 dev_open_win…...

prometheus 添加alertmanager添加dingtalk机器人告警

1、dingtalk创建机器人,目前我们采用加白名单的方式校验 2、定位到如下图 test结果如下...

一些题目记录

别人面经题目记录 https://zhuanlan.zhihu.com/p/32626732052 实现 NMS&#xff0c;七八次&#xff0c;很高频&#xff1b; 实现 MultiHeadSelfAttention&#xff0c;大概 三四次&#xff1b; 用 Numpy 或者 List 实现MLP 的前向和反向&#xff0c;4次&#xff1b; Leetcode …...

向量数据库学习笔记(1) —— 基础概念

一、 嵌入模型 Embedding Models 嵌入模型是将复杂数据&#xff08;如文本、图像、音频等&#xff09;转换为向量表示的机器学习模型 1. 核心概念 嵌入(Embedding)&#xff1a;将高维、非结构化的数据映射到低维、稠密的向量空间 向量表示&#xff1a;输出固定长度的数值向量…...

Python学习第二十五天

Scrapy框架 官网概念 Scrapy 是一个强大的 Python 网络爬虫框架。 最新版本学习 安装 pip install scrapy 使用 # 创建名称为myscrapy的爬虫项目 scrapy starpoject myscrapy # 创建爬那个 就是比如 需要爬http://quotes.toscrape.com 运行的名称&#xff1a;toscrape运行…...

GitHub Copilot平替:CodeGeeX 2.0实测报告

本文基于20个真实开发场景对CodeGeeX 2.0进行深度评测&#xff0c;涵盖代码生成质量、上下文理解能力、多语言支持度等关键维度。通过Python数据分析、Java微服务、React前端开发三大核心场景的对比实验&#xff0c;揭示其相比GitHub Copilot在中文语境支持、本地化部署、隐私保…...

【算法】动态规划:回文子串问题、两个数组的dp

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 回文子串问题回文子串最长回文子串分割回文串 IV分割回文串 II *最长回文子序列让字符串成为回文串的最少插入次数 两个数组的dp最…...

文件上传绕过的小点总结(3)

6.文件首尾加空绕过 源码给出这样的&#xff0c;发现文件名处理没有首尾去空&#xff0c;于是我们可以采用首尾加空的方式绕过。 $file_name $_FILES[upload_file][name]; $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_e…...

OpenHarmony 入门——ArkUI 跨页面数据同步和应用全局单例的UI状态存储AppStorage 小结(三)

文章大纲 引言一、AppStorage 应用全局的UI状态存储1、StorageProp和StorageLink装饰器建立联系2、StorageProp2.1、StorageProp使用规则2.2、StorageProp变量的传递/访问规则2.3、StorageProp支持的观察变化2.4、StorageProp 值初始化和更新 3、StorageLink3.1、StorageLink使…...

4. 如何减少大模型幻觉?⸺大模型外挂向量数据库的分析(知识延伸版)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 1. 大模型幻觉 1.1 大模型幻觉的含义 1.2 大…...

【渗透测试】Fastjson 反序列化漏洞原理(二)

目录 反序列化漏洞结合 RMI 攻击详解一、RMI 和 JNDI 的基础知识(1) RMI 简介(2) JNDI 简介 二、漏洞利用的核心原理1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 加载并执行恶意代码 三、具体利用过程环境准备攻击步骤1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 部署恶意类…...

阿里云国际站代理商:物联网设备怎样就近接入计算节点?

配置边缘计算实例 登录边缘计算控制台&#xff0c;找到已创建的边缘实例&#xff0c;点击实例名称后的“查看”。 分配OPC UA驱动到边缘实例中&#xff0c;选择OPCUA驱动&#xff0c;点击“设备列表”后的“驱动配置”&#xff0c;在弹出对话框中点击“添加通道”&#xff0c;…...

目录遍历漏洞复现

1.在fofa中输入语法&#xff0c;查询目录遍历 body"SKControlKLForJson.ashx" 查询结果为&#xff1a; 2.寻找目录遍历漏洞&#xff0c;访问网站&#xff1a; 3.我们可以app目录中下载文件等等 4.我们还可以访问其他目录的一些东西...

Java高频面试之集合-18

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;HashMap 是线程安全的吗&#xff1f;多线程下会有什么问题&#xff1f; HashMap 的线程安全性分析 HashMap 不是线程安全…...

清晰易懂的 C 语言开发环境彻底卸载与清理教程

一、卸载前的关键理解 C 语言本身是编程语言&#xff0c;无法直接“卸载”&#xff0c;但开发环境通常包含&#xff1a; 编译器&#xff08;如 GCC、Clang&#xff09;构建工具&#xff08;如 Make、CMake&#xff09;IDE 集成&#xff08;如 Visual Studio、Code::Blocks&am…...

系统思考—看见未来

感谢上海财经大学终身教育学院的持续邀请&#xff01;每个月&#xff0c;都会带着不同的思维火花&#xff0c;走进财大与学员们一起探索系统思考的奥秘。 这次为宜宾市的干部们带来了一场深刻的学习体验。通过系统思考&#xff0c;帮助大家从整体视角去发现问题、分析问题、解…...

嵌入式单片机程序的映像文件解读

映像文件类型 单片机下载程序的映像文件是包含了可执行代码、数据等信息,用于将程序烧录到单片机中的文件。常见的映像文件种类如下: 十六进制文件(Hex 文件) 格式特点:Hex 文件是一种文本格式的文件,以 ASCII 字符形式存储数据。它由一系列的记录组成,每条记录包含一个…...

保姆级教程搭建企业级智能体+私有知识库,Dify+ollama,Linux版

介绍 目前&#xff0c;AI Agent智能体已经被许多公司广泛应用&#xff0c;同时智能体借助私有知识库的加成&#xff0c;使原来知识面并不特别充分的大模型更聪明。如今特别是在医疗&#xff0c;医药&#xff0c;政企等数据保密程度高的行业&#xff0c;部署自己的私有知识库更…...

记一次线上程序宕机问题分析【写 GC 日志导致进程挂起】

1. 背景 运维侧持续反馈了几次线上业务程序 A 出现宕机告警的信息&#xff0c;重启后一段时间后又出现宕机&#xff0c;这里针对最后一次告警进行深入排查和分析。 首先这一次故障出现在 2024-03-14 04:18:23&#xff0c;和以往的宕机故障略有不同&#xff0c;以往的现象是切…...

position embedding

文章目录 1. 四种position embedding2. pytorch 源码[后续整理] 【因比较忙&#xff0c;后续整理】 1. 四种position embedding Position Embedding 1. Transformer 1.1 1d absolute 1.2 sin/cos constant 1.3 2. Vision Transformer 2.1 1d absolute 2.2 trainable 3. Swin T…...

【leetcode hot 100 739】每日温度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一个更高温度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高温度的地方wh…...

netplan是如何操控systemd-networkd的? 笔记250324

netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd&#xff1a; 工作原理&#xff1a;netplan读取位于/etc/netplan/目录下的YAML格式的配置文件&#xff0c;这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...

Cookie、Session 与 Token:核心区别与应用场景解析

目录 引言 基础概念解析&#xff1a;三大身份验证技术详解 Cookie&#xff1a;浏览器中的"身份证" Session&#xff1a;服务器记忆的"对话" Token&#xff1a;加密的"通行证" 三种技术的深度对比分析 存储位置与数据流向 安全性全面对比…...

结合DrRacket学习《如何设计程序,第二版》

如何设计程序语言 DrRacket用于学习程序语言和设计程序语言&#xff0c;如何设计程序手册&#xff1a;How to Design Programs 如何设计程序&#xff0c;第二版&#xff1a;How to Design Programs, Second Edition 系统程序设计 设计师需遵循一系列严谨且系统的步骤&#…...

状态空间模型解析 (State-Space Model, SS)

一、文章摘要 状态空间模型&#xff08;State-Space Model, SS&#xff09;是一种广泛应用于控制系统、信号处理和系统建模的数学表示方式。MATLAB 提供的 ss 类用于描述线性时不变&#xff08;LTI&#xff09;系统的状态空间表示。本类实现了 LTI 系统的构造、属性设置、变换…...

zabbix添加IIS网站计数器(并发连接数)

0. Zabbix Agent 配置 PerfCounter = iis_Current_Connections,"\Web Service(_Total)\Current Connections",30 1.在被监控主机,powershell输入perfmon.msc 2.点击添加按钮 3.在下拉菜单中点击小箭头...

uniapp处理流式请求

在uniapp里面处理流式请求相对于web端来说有点麻烦&#xff0c;下面我将讲述几种处理流式请求的方式。 1.websocket WebSocket 是处理实时数据流的最佳选择之一&#xff0c;UniApp 提供了原生的 WebSocket 支持&#xff1a; <template><view class"container&…...

代码随想录算法训练营第四十一天|买卖股票专题:121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

动规五部曲牢记于心 1、确定好dp[j]数组&#xff0c;以及下标含义 2、推导出dp[j]公式 3、初始化&#xff0c;关键dp[0][0]、dp[0][1]&#xff0c;第i天&#xff0c;后面的01表示状态&#xff1a;持有、不持有 4、确定遍历顺序&#xff1a; 如果求组合问题&#xff0c;不考虑排…...

AI小白的第七天:必要的数学知识(概率)

概率 Probability 1. 概率的定义 概率是一个介于 0 和 1 之间的数&#xff0c;表示某个事件发生的可能性&#xff1a; 0&#xff1a;事件不可能发生。1&#xff1a;事件必然发生。0 到 1 之间&#xff1a;事件发生的可能性大小。 例如&#xff0c;掷一枚公平的硬币&#xf…...