[计算机网络] HTTP/HTTPS

news2025/3/15 10:25:32

一. HTTP/HTTPS简介

1.1 HTTP

HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 80。

HTTP的工作过程:

  • 客户端发起请求
  • 服务器处理请求
  • 服务端返回响应
  • 客户端渲染页面

HTTP三点注意事项:

  • HTTP是无连接的, 每次只处理一次请求, 即服务器处理完客户端的连接, 并接收客户端的回应后, 即断开连接, 这种方式可以节省传输时间.
  • HTTP是媒体独立的, 即只要服务端和客户端知道需要传输的数据, 任何类型的数据都可以通过HTTP传输, 客户端和服务端指定合适的MIME-type.
  • HTTP是无状态的, 无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。

1.2 HTTPS

HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443。

二. HTTP/HTTPS请求

使用 fiddler 来捕获B站的请求
在这里插入图片描述
可以发现, HTTP请求由四部分构成:

  • 首行
  • 请求头
  • 空行
  • 主体

接下来详细的介绍一下各个部分.

2.1 首行

在这里插入图片描述
首行由 请求方式 + URL + HTTP版本号 组成

2.2 请求头

在这里插入图片描述
Host: 服务器域名.
Connection: 连接管理策略, keep-alive表示希望在完成当前请求后保持连接. 以便复用同一个TCP连接发送数据
Content-Length: 请求体的长度, 单位是字节.
sec-zh-ua-platform:客户端的操作系统平台
User-Agent:客户端的浏览器和操作系统的信息

Accept: 客户端能够处理的内容类型, 'application/json’表示客户端希望服务器返回JSON格式的数据.
sec-ch-ua: 客户端浏览器的用户代理品牌和版本信息
Content-Type: 请求体的媒体类型, 'application/json’表示请求体是JSON格式的数据.
sec-ch-ua-mobile: 客户端是否为移动设备. '?0’表示不是移动设备.
Origin: 请求的源, 即发起请求的页面的URL.
Sec-Fetch-Site:请求的站点上下文, 'same-site’表示请求来自同一站点
Sec-Fetch-Mode: 请求的模式, cors表示跨源资源共享请求
Sec-Fetch-Dest:请求的目的地, empty表示没有指定目的地.

Referer: 从哪个URL跳转来的
Accept-Encoding: 客户端能够处理的内容编码.这里列出了客户端支持的压缩模式, gzip br…
Accept-Language: 客户端能够理解的语言
Cookie: 包含客户端存储的cookie信息, 用于会话管理, 用户跟踪或个性化设计.

2.3 空行

请求头和请求体之间的空行. 标志着请求头的结束.

2.4 请求体

在这里插入图片描述
请求体包含要发送给服务器的数据.

三. HTTP/HTTPS请求方法

3.1 请求方法

  1. GET 从服务器获取资源. 例如: 从服务器获取图片, 视频等.
  2. POST 向服务器发送数据来创建新资源. 例如: 表单提交, 上传文件. 发送数据包含在请求体中.
  3. PUT 向服务器发送数据来更新现有资源. 如果资源不存在,则创建新的资源。与 POST 不同,PUT 通常是幂等的,即多次执行相同的 PUT 请求不会产生不同的结果。
  4. DELETE 删除服务器中的资源. 请求中包含要删除的资源标识符.
  5. PATCH 对资源进行部分修改. 与PUT类似.
  6. HEAD 类似于GET但服务器只返回响应的头部,不返回实际数据。用于检查资源的元数据(例如,检查资源是否存在,查看响应的头部信息)。
  7. OPTIONS 返回服务器支持的请求方法. 用于检查服务器支持哪些请求方法,通常用于跨域资源共享(CORS)的预检请求。
  8. TRACE 回显服务器收到的请求, 主要用于诊断. 客户端可以查看请求在服务器中的处理路径.
  9. CONNECT 建立一个到服务器的隧道,通常用于 HTTPS 连接。客户端可以通过该隧道发送加密的数据。

3.2 各个HTTP版本

各个HTTP版本定义的请求方法.

  • HTTP/1.0
    • GET
    • POST
    • HEAD
  • HTTP/1.1
    • GET
    • POST
    • HEAD
    • PUT
    • DELETE
    • OPTIONS
    • TRACE
    • CONNECT
  • HTTP/2
    • HTTP/2 基本上沿用了 HTTP/1.1 的方法,但对协议进行了优化,提高了传输效率和速度。HTTP/2 也引入了新的特性,如多路复用、头部压缩和服务器推送等。
  • HTTP/3
    • HTTP/3 基于 QUIC 协议实现,继续使用 HTTP/2 的方法。HTTP/3 主要改进了传输层,使用 UDP 代替 TCP 以提高传输速度和可靠性。

3.3 GET和POST的区别(面试常考)

  • 功能上: GET一般用于从服务器上获取资源, POST则用于更新服务器中的资源.:

  • 安全性: GET是不安全的, 因为GET请求提交的数据(参数)将明文出现在URL上(请求头), 可能会泄露隐私; POST是安全的, 因为POST请求提交的数据(参数)被包装在请求体中.
    在这里插入图片描述
    -

  • 数据量: GET传输的数据量少, 因为受URL长度的限制;POST传输的数据量大, 因为传输的数据被包装在请求体中. 因此, 上传文件时使用POST.

四. HTTP/HTTPS响应

捕获 B站 的响应.
在这里插入图片描述
响应也由四部分组成:

  • 首行
  • 响应头
  • 空行
  • 响应体

详细介绍.

4.1 首行

在这里插入图片描述
响应的首行由三部分组成.
HTTP版本号 + 状态码 + 状态码的描述性文本.

4.2 响应头

在这里插入图片描述
这次重点认识一些.
Date: 响应生成的日期和时间.
Content-Type: 响应体的媒体类型.
Content-Length: 响应体的长度, 单位为字节.
Connection: 连接管理策略. keep-alive 表示服务器希望保持连接.
Server: 指定服务器软件的信息.

4.3 空行

响应头和响应体之间的空行. 标志着响应头的结束.

4.4 响应体

在这里插入图片描述
{“code”:0} 是一个JSON格式的响应体,通常用于API(应用程序编程接口)调用的结果。在这种情况下,它表示请求已成功处理,并且服务器返回了一个状态码 0,这通常意味着没有错误发生,请求执行成功。

五. 状态码

状态码表示客户端请求的返回结果.

5.1 状态码的分类

状态描述
1XX指示信息-表示请求已经被接受, 正在处理
2XX成功-表示请求已被成功接收, 理解, 接受
3XX重定向-要完成请求必须进行更进一步的操作
4XX客户端错误-请求有语法错误或请求无法实现
5XX服务器端错误-服务器未能实现合法的请求

5.2 常见状态码

常用状态码:
200: 请求被正常处理
204: 请求被受理但没有资源可以返回
301: 永久性重定向
302: 临时重定向
304: 已缓存
400: 请求报文语法有误,服务器无法识别
403: 请求的对应资源禁止被访问
404: 服务器无法找到对应资源
500: 服务器内部错误
503: 服务器正忙

以上这些是HTTP/HTTPS的基础知识.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

element-ui的下拉框报错:Cannot read properties of null (reading ‘disabled‘)

在使用element下拉框时,下拉框option必须点击输入框才关闭,点击其他地方报错:Cannot read properties of null (reading disabled) 造成报错原因:项目中使用了el-dropdown组件,但是在el-dropdown里面没有定义el-dropdo…

新一代零样本无训练目标检测

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年12月2日21点02分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅h…

30.100ASK_T113-PRO 用QT编写视频播放器(一)

1.再buildroot中添加视频解码库 X264, 执行 make menuconfig Target packages -->Libraries --> Multimedia --> X264 CLI 还需要添加 FFmpeg 2. 保存,重新编译 make all 3.将镜像下载开发板

Python办公自动化,批量生成Excel案例数据集

在数据分析的世界里,数据是核心,而如何高效地生成和处理数据则成为每位数据分析师必备的技能之一。今天,我们要探讨一个有趣的话题——“造数”。 但这里的“造数”并非意味着编造数据,而是指在确保数据安全的前提下,…

在线绘制Nature Communication同款双色、四色火山图,突出感兴趣的基因

导读:火山图通常使用三种颜色分别表示显著上调,显著下调和不显著。通过为特定的数据点添加另一种颜色,可以创建双色或四色火山图,从而更直观地突出感兴趣的数据点。 《Nature Communication》文章“Molecular and functional land…

【大语言模型】ACL2024论文-23 检索增强的多语言知识编辑

【大语言模型】ACL2024论文-23 检索增强的多语言知识编辑 目录 文章目录 【大语言模型】ACL2024论文-23 检索增强的多语言知识编辑目录摘要研究背景问题与挑战如何解决核心创新点算法模型实验效果(包含重要数据与结论)相关工作后续优化方向 后记 检索增强…

ETSI EN 300328 标准的一些笔记

ETSI - European Telecommunications Standards Institute 欧洲电信标准化协会 ETSI EN 300328 是欧洲协调标准,此标准适用于工作在2.4G频段范围内运行的宽频传输系统和设备的无线电频谱。 例如 WIFI、Zigbee、蓝牙、 (国内的星闪)。不涵盖UWB。 符合了EN 300328标…

VSCode:代码格式化插件

settings.json文件中添加如下配置并保存 {"workbench.sideBar.location": "left","cssrem.rootFontSize": 80,"git.ignoreWindowsGit27Warning": true,"eslint.codeAction.showDocumentation": {"enable": true…

Redis实现限量优惠券的秒杀

核心&#xff1a;避免超卖问题&#xff0c;保证一人一单 业务逻辑 代码步骤分析 全部代码 Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {Resourceprivate ISeckillVoucher…

Github提交Pull Request教程 Git基础扫盲(零基础易懂)

1 PR是什么&#xff1f; PR&#xff0c;全称Pull Request&#xff08;拉取请求&#xff09;&#xff0c;是一种非常重要的协作机制&#xff0c;它是 Git 和 GitHub 等代码托管平台中常见的功能&#xff0c;被广泛用于参与社区贡献&#xff0c;从而促进项目的发展。 PR的整个过…

大数据技术Kafka详解 ② | Kafka基础与架构介绍

目录 1、kafka的基本介绍 2、kafka的好处 3、分布式发布与订阅系统 4、kafka的主要应用场景 4.1、指标分析 4.2、日志聚合解决方法 4.3、流式处理 5、kafka架构 6、kafka主要组件 6.1、producer(生产者) 6.2、topic(主题) 6.3、partition(分区) 6.4、consumer(消费…

Docker中配置Mysql主从备份

Mysql配置主从备份 一、Docker中实现跨服务器主从备份二、配置步骤1.配置主库2.配置从库3.遇到问题3.其它使用到的命令 一、Docker中实现跨服务器主从备份 在 Docker 中配置 MySQL 主从备份主要通过 MySQL 主从复制实现 二、配置步骤 1.配置主库 # 进入mysql主库容器 docke…

组态王实现设备OEE数据采集的项目总结

组态王实现设备OEE数据采集的项目总结 方案设计硬件设计软件设计 难点总结数据通讯数据转换报表数据存储 项目拓展 最近在做一个项目&#xff0c;关于采集设备OEE数据。陆陆续续做了小半个月&#xff0c;现在算告一段落&#xff0c;特整理总结。 方案设计 硬件设计 本项目是…

C++《set与map》

在之前我们已经学习了解了CSTL当中的string和vector等容器&#xff0c;现在我们已经懂得了这些容器提供的接口该如何使用&#xff0c;并且了解了这些容器的底层结构。接下来我们在本篇当中将继续学习STL内的容器set与map&#xff0c;在此这两个容器与我们之前学习的容器提供的成…

FPGA 15 ,Xilinx Vivado 的基本使用,使用 Vivado 点亮LED灯,具体实现(使用赛灵思 Vivado编写 Verilog 代码)

目录 前言 我们都知道 Xilinx Vivado 是一款强大的 FPGA 集成开发环境&#xff0c;支持从设计输入、综合、实现到仿真的全流程。它兼容 Verilog 和 VHDL 等硬件描述语言&#xff0c;具备高层次综合功能&#xff0c;能有效提升复杂数字系统的设计效率和性能优化。这里来分享记…

VxLAN 集中式网关配置实验

一、拓扑&#xff1a; 二、配置思路&#xff1a; 1、CE1、2、3 配置 IGP&#xff0c;如 RIP 2、CE1、3 配置 BD 域并绑定二层 VNI&#xff0c;起用 NVE 并建立 VxLAN 隧道&#xff1a;源是自己的环回口&#xff0c;对端是 CE2、3 的环回口&#xff0c;用二层 VNI 联接&#x…

qml项目创建的区别

在Qt框架中&#xff0c;你可以使用不同的模板来创建应用程序。你提到的这几个项目类型主要针对的是Qt的不同模块和用户界面技术。下面我将分别解释这些项目类型的区别&#xff1a; 根据你提供的信息&#xff0c;以下是每个项目模板的详细描述和适用场景&#xff1a; Qt Widgets…

仿真s7 snap7 写入

# 准备写入数据 data bytearray(20) # 创建 20 字节的缓冲区 (每个整数占 2 字节&#xff0c;共 10 个整数)# 按顺序将值 1, 2, 3, ..., 10 写入数据缓冲区 for i in range(10):set_int(data, i * 2, i 1) # 每个整数占 2 字节&#xff0c;从 i * 2 的位置开始写入整数# 将…

【计算机网络】实验6:IPV4地址的构造超网及IP数据报

实验 6&#xff1a;IPV4地址的构造超网及IP数据报 一、 实验目的 加深对IPV4地址的构造超网&#xff08;无分类编制&#xff09;的了解。 加深对IP数据包的发送和转发流程的了解。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、了解IPV4地址的构造超网…

[CSP-J 2024] 小木棍

题目传送门 P11229 [CSP-J 2024] 小木棍 题解思路&#xff1a; 1、首先想到的是搜索&#xff0c;全排列填盒子的思想&#xff0c;小木棍数够组成某个数&#xff0c;把某个数放到盒子里&#xff0c;这里就是累加到sum上&#xff0c;还做了个剪枝&#xff0c;中间如果已经大于…