HTTP协议基础

news/2024/12/2 22:22:26/文章来源:https://www.cnblogs.com/hackerT/p/18582885

HTTP协议基础

一.定义

HTTP协议(HyperText Transfer Protocol),超文本传输协议,它是一种客户端(如网页浏览器)和服务器端(如网站服务器)之间进行通信、请求与响应数据的规则集合。通过 HTTP 协议,客户端可以向服务器发起获取网页、图片、脚本等各种资源的请求,服务器接收到请求后,按照协议规范处理请求并返回相应的响应数据给客户端。

二.发展历史

  • HTTP/0.9:初代版本,功能简单,仅支持获取 HTML 文档,且只有 GET 一种请求方法,响应单纯为 HTML 内容。
  • HTTP/1.0:增加了请求方法(如 POST 等),支持多类型文件传输,引入请求头和响应头,完善了通信灵活性,但存在连接效率问题。
  • HTTP/1.1:广泛应用版本,支持持久连接、更多请求方法(PUT、DELETE 等),优化了缓存控制机制,增强虚拟主机支持等。

三.工作原理

  • 建立连接:客户端基于 TCP(HTTP/1.1 及之前)或 QUIC(HTTP/3)协议向服务器发起连接请求,部分版本支持连接复用。
  • 客户端发起请求:构造包含请求行、请求头、请求体(可选)的请求消息,向服务器发送,不同请求方法有不同用途(GET 获取、POST 提交等)。
  • 服务器处理请求:按请求信息查找并处理相应资源,依据请求头要求操作。
  • 服务器返回响应:构造含响应行、响应头、响应体的响应消息,发送回客户端,响应状态码表明处理结果。
  • 关闭连接(视情况):早期版本或特定场景下完成交互即关闭;支持持久连接的版本会按需保持或超时关闭。

四.请求与响应

1.请求

HTTP 请求由请求行、请求头、请求体(可选)这三大部分构成,它们按照特定顺序组合在一起,从客户端发送到服务器,告知服务器客户端的需求以及相关的附加信息等,服务器会依据这些内容来进行相应处理并返回响应。
img

1.1 请求行

请求行是请求消息的第一行,由请求方式请求资源路径协议版本这三部分组成。

请求方式

明确客户端希望服务器执行的操作类型,常见的请求方法有 GET、POST、PUT、DELETE 等。

  • GET:通过URL请求服务器发送资源,通常用于获取数据,客户端可见,不适合用于传输加密信息。
    img
  • POST:用于向指定资源提交数据,通常用于创建或更新资源。POST请求的数据包含在请求体中,适合需要提交表单数据的场景,客户端不可见。
    img
  • HEAD:类似于GET请求,但响应中不返回报文主体内容,仅返回报文头信息,常用于检查资源的存在性和元数据。
    img
  • PUT:用于替换指定资源的内容,通常用于更新或创建资源。
    img
  • DELETE:用于请求服务器删除指定的资源。
    img

1.2 请求头

请求头紧跟在请求行之后,它由一系列的键值对组成,每一行代表一个头字段,用于向服务器传递各种额外的信息。
img

  • host:指定请求的目标主机域名或 IP 地址以及端口号,这有助于服务器区分不同域名对应的资源请求。

  • User-Agent:用来告知服务器客户端的软件信息,包括浏览器类型、版本以及操作系统等情况,服务器可以根据此信息来进行兼容性处理或者统计客户端使用情况等。

  • Accept:向服务器表明客户端能够接受的响应内容的类型以及优先级(从左到右优先级降低)。q为质量因子,通过q体现优先级。

  • Accept-Encoding:说明客户端支持的内容编码格式,目的是告知服务器可以对响应内容采用这些编码方式进行压缩后传输,以节省网络带宽,客户端在接收到响应后会进行相应的解码操作来还原内容。

  • Accept-Language:用于传达客户端需要的语言,服务器可以据此提供对应的语言版本的内容。

  • Content-Type:该头字段用来指定请求体中数据的类型。

    • application/x-www-form-urlencoded:用于表单数据编码格式
    • multipart/form-data 用于包含文件上传的复杂表单数据格式
  • Content-Length:指明请求体中数据的长度,告诉服务器要接受的数据量多少。

1.3 请求体

主要用于在需要向服务器传递数据时使用,如post传递表单数据时。
img

2.响应

HTTP 响应是服务器针对客户端发起的 HTTP 请求所做出的回复,告知客户端请求的处理结果,并在合适情况下返回相应的资源内容。它遵循一定的格式规范,由多个关键部分构成,以方便客户端正确解析和处理接收到的信息。
img
同样的,响应也由三部分构成:

2.1 响应行

由协议版本,状态码和状态描述三部分构成。

状态码

状态码表明资源的请求结果状态,第一位表示类型:
img
常见状态码及其描述:
img

2.2 响应头

响应头也紧跟在响应行之后,它同样由一系列的键值对组成,每一行代表一个头字段。

  • Date:原始服务器消息发出的时间,用格林尼治时间表示。
  • Allow:服务器允许那种请求方式,不运行则返回403(禁止访问被请求资源)。
  • Content-Encoding:服务器支持的返回内容压缩编码类型。
  • Content-Language:响应体的语言。
  • Content-Length:响应体的长度。
  • Server:响应服务器的软件名称。
  • X-Powered-By:告知客户端该响应是由哪种服务器软件或框架生成的。

2.3 响应体

响应体是服务器依据客户端请求进行相应处理后,要传递给客户端的具体数据实体。其作用在于为客户端提供请求所期望获取的内容,比如当客户端请求查看一个网页时,响应体就是该网页对应的 HTML 代码。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Power Automate 获取通讯组的成员

前言最近,想要看看某个Group里都有哪些人正文在Power Automate里可以用Office 365 Groups这个连接器里的操作,先根据邮件地址获取到Group,然后用Group Id获取Group即可获取到Group members的截图获取结果的JSON[{"@odata.type": "#microsoft.graph.user"…

实验5.继承和多态

1.实验任务1: publisher.hpp:#pragma once#include <iostream> #include <string>using std::cout; using std::endl; using std::string;// 发行/出版物类:Publisher (抽象类) class Publisher { public:Publisher(const string &s = ""); …

PTQ 精度 Debug 工具

01 前言 使用 PTQ 后量化的模型量化方案,可以帮助用户非常简单便捷地完成从浮点模型到地平线混合异构模型的转换,模型转换工具会基于用户提供的校准样本对模型进行校准量化并保障模型高效地部署在地平线计算平台上。 但是在模型转换的过程中,不可避免地会因为浮点高精度到定…

字符串的遍历、统计字符案例

1.两种字符串遍历方法1.toCharArray 将字符串转换成一个新的字符类型的数组 调用方式:对象.如图,其实就相当于把字符串全部拆开,变成一个个的字符,再由字符数组来接收2.charAt 根据输入的索引,从字符串里找出对应的字符 调用方法:对象. 如图如果我们要遍历字符串,那不就…

synchronized同步锁机制

目录synchronized 的使用Java的对象头和 Monitor对象头实例数据对齐填充synchronized 原理synchronized修饰代码块示例对象锁的四种状态无锁偏向锁轻量级锁重量级锁synchronized 的使用如果修饰的是具体对象:锁的是对象 如果修饰的是成员方法:那锁的就是 this 如果修饰的是静…

员工出入更衣室穿戴规范识别检测系统

员工出入更衣室穿戴规范识别检测系统能够通过安装在更衣室入口的摄像机,员工出入更衣室穿戴规范识别检测系统实时检测员工的穿戴情况。系统的工作流程如下:当员工进入更衣室时,摄像机捕捉到图像,算法迅速识别图像中的人员,并检测他们是否穿戴了规定的防护服、护目镜、口罩…

Lock接口

目录Lock接口Lock接口概述API方法锁获取与中断Synchronized和Lock的区别 Lock接口大佬地址: AQS(AbstractQueuedSynchronizer)源码深度解析(2)—Lock接口以及自定义锁的实现Lock接口概述 Lock接口同样自于JDK1.5,它被描述成JUC中的锁的超级接口,所有的JUC中的锁都会实现Lock…

作文的深度解析

目录题目一:There is a growing awareness of the importance of digital literacy and skills in todays world题目二:Nowadays more and more college students have come to realize social practice and academic learning are equally important. 题目一:There is a gr…

终极Redis

Redis是世界上最流行的数据存储之一,功能丰富。这里有8个简单的步骤可以帮助你理解Redis的基本原理。1、什么是Redis?Redis(远程字典服务器)是一个多模式数据库,提供亚毫秒级的延迟。Redis背后的核心思想是缓存也可以作为一个完整的数据库。2、Redis采用Airbnb、Uber、Sla…

AI电动车头盔识别系统解决方案

AI电动车头盔识别系统解决方案通过在关键路段及社区入口等位置安装高清摄像头,AI电动车头盔识别系统解决方案结合深度学习算法对电动车骑行者进行实时监测,确保骑行者的安全。识别到未佩戴头盔的骑行者时,AI电动车头盔识别系统解决方案将立即联动附近的智能广播系统播放预先…

H5-17 选择器

CSS语法 规则由两个主要的部分构成:选择器,以及一条或多条声明(样式) 1、全局选择器可以与任何元素匹配,优先级最低,一般做样式初始化*{margin:0;padding:0;} 2、元素选择器HTML 文档中的元素,p、b、div、a、img、body等标签选择器,选择的是页面上所有这种类型的标签…

canal的安装搭建

canal介绍主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 这里我们可以简单地把canal理解为一个用来同步增量数据的一个工具。canal能做什么数据库镜像 数据库实时备份 索引构建和实时维护 业务cache(缓存)刷新 带业务逻辑的增量数据处理首先开启mysql bi…