HTTP协议:发展、请求响应、状态码 等


文章目录

    • HTTP
      • 发展历程
      • HTTP请求
      • URL和URI
      • HTTP协议版本
      • HTTP请求方法
      • GET 和 POST 区别
      • HTTP状态码
      • HTTP 请求与响应报文
      • HTTP 请求流程


HTTP

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网WWW(World Wide Web)的数据通信的基础。

发展历程

在这里插入图片描述

各版本区别:
在这里插入图片描述

HTTP请求

在这里插入图片描述

在这里插入图片描述

URL和URI

URI(Uniform Resource Identifier,统一资源标识符):是一种用于标识互联网资源的通用格式,可以是具体的资源地址(URL)或名称(URN)。URI是一个较广泛的概念,它可以表示任何可识别的资源。

URL(Uniform Resource Locator,统一资源定位符):是URI的一个子集,用于指定资源的具体位置(如网页、文件等)。URL不仅标识资源,还提供访问它的方法(通常是通过HTTP、HTTPS、FTP等协议)。

HTTP协议版本

  1. HTTP/0.9

    最早期的 HTTP 版本,只支持 GET 请求,且不支持 HTTP 头信息,也无法在请求中携带其他元数据。

  2. HTTP/1.0

    第一个正式标准化的 HTTP 版本,引入了更多的请求方法,并允许客户端与服务器之间传递更多信息(如请求头、响应头等)。HTTP/1.0 仍然被广泛使用,尤其是在代理服务器中。

  3. HTTP/1.1

    增强了连接管理,引入了持久连接(Persistent Connection),使得同一 TCP 连接可以被多个请求复用。它还支持管道方式(Pipelining),允许多个请求同时发送,减少了服务器响应的延迟。

  4. HTTP/2.0

    引入了完全的多路复用技术,允许客户端和服务器在同一连接中同时发送多个请求和响应。它还通过压缩 HTTP 头信息来减少数据传输量,并引入了服务端推送功能,允许服务器主动向客户端发送资源。

特点

  • HTTP/1.0:仅支持短连接,一个TCP连接中只能完成一次HTTP请求与响应。
  • HTTP/1.1:支持长连接和管道机制,多个请求与响应可以在一个TCP连接中完成。
  • HTTP/2.0:支持长连接、多路复用、网页头部压缩、服务器推送,使用二进制格式。
  • HTTP/3.0:基于UDP协议,传输效率更高。

HTTP请求方法

HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST、PUT。

常用的 HTTP 方法:

方法描述
GET从服务器请求资源(例如获取网页内容或文件)。
POST向服务器提交数据,通常用于表单提交或文件上传。
PUT向服务器发送数据,通常用于修改现有资源。
DELETE请求服务器删除某个资源。
HEAD类似于 GET,但不返回资源的主体部分,只获取响应头信息。
CONNECT建立一个隧道连接,通常用于 HTTPS 代理。
OPTIONS请求查看服务器支持的请求方法。
TRACE用于调试,返回服务器收到的请求内容,用来追踪请求路径。

说明

1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

2、PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会将数据携带在body当中,通常表示的是“create”的含义,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。

4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作

GET 和 POST 区别

  • GET 请求

    GET 请求用于从服务器获取数据。请求的参数会附加在 URL 中,因此数据在请求中是公开的。GET 请求可以被缓存,也会保存到浏览器历史中,且长度有限。

  • POST 请求

    POST 请求用于向服务器提交数据。与 GET 不同,POST 请求的数据包含在请求体中,而不是 URL,因此数据更加安全。POST 请求不会被缓存,也不会记录在浏览器历史中,且没有数据长度的限制。

HTTP状态码

HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL 时, 服务器根据处理情况返回相应的处理状态。

通常正常的状态码为2xx,3xx(如200),如果出现异常会返回4xx,5xx(如404)。

  • 1xx (信息):表示请求已收到,需要进一步操作。
  • 2xx (成功):表示请求已成功处理。
  • 3xx (重定向):需要客户端采取进一步行动来完成请求。
  • 4xx (客户端错误):请求包含语法错误或无法完成。
  • 5xx (服务器错误):服务器在处理请求时发生了错误。

常见的 HTTP 状态码

状态码描述
200请求成功,服务器返回了请求的资源。
301请求的资源已永久移动到新的 URL,客户端应更新请求地址。
302请求的资源临时移动到新的 URL,客户端应使用新的 URL 进行后续请求。
401认证失败,客户端需要提供有效的认证信息。
403禁止访问,客户端没有权限访问请求的资源。
404资源未找到,服务器无法找到请求的页面或文件。
414请求URI头部过长。
500服务器内部错误,服务器在处理请求时发生了问题。
502网关错误,服务器作为网关或代理时从上游服务器接收到无效响应。
503服务不可用,服务器当前无法处理请求,通常是由于过载或维护。
504网关超时,服务器作为网关或代理时未能及时从上游服务器接收到响应。

HTTP 请求与响应报文

HTTP 请求报文和响应报文都有固定的结构,包含请求或响应的状态行、头部信息和主体内容。

1. 请求报文

在这里插入图片描述

  • 请求行:由请求方法、请求的 URL 和协议版本组成。

    例如:GET /index.html HTTP/1.1

  • 请求头:包含客户端附加的请求信息,以名/值对的形式表示。常见的请求头包括:

    • Host:指定请求目标的服务器域名或 IP 地址,可以附带端口号(如 Host: example.com:8080)。
    • User-Agent:客户端发送请求的软件或浏览器的信息,通常包含浏览器、操作系统等标识。
    • Accept:客户端支持的内容类型,告知服务器可以返回的 MIME 类型(如 text/htmlapplication/json)。
    • Connection:定义连接的管理方式,常用值为 Keep-Alive,表示保持连接不断开,支持多个请求复用。
    • Accept-Charset:告知服务端客户端支持的字符编码格式(如 UTF-8ISO-8859-1)。
    • Accept-Encoding:指定客户端支持的内容压缩方式(如 gzipdeflate)。
    • Accept-Language:通知服务端客户端的首选语言(如 en 表示英语,zh-CN 表示简体中文)。
  • 空行:请求头和请求体之间必须有一个空行,用来分隔头部信息和主体内容。

  • 请求体:携带客户端提交的数据,通常用于 POST、PUT 等请求。GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。

2. 响应报文

在这里插入图片描述

  • 状态行:由协议版本、状态码和状态描述组成。

    例如:HTTP/1.1 200 OK

  • 响应头:与请求头类似,服务器返回的附加信息,常见的响应头包括:

    • Server:显示服务器使用的软件及其版本信息。
    • Content-Type:指定响应内容的类型,如 HTML、JSON、图片等。
    • Content-Length:指定响应体的字节长度,表示内容的大小。
    • Content-Charset:指定响应体的字符编码格式,如 UTF-8、ISO-8859-1。
    • Content-Encoding:标明响应体采用的压缩方式,如 gzip、deflate。
    • Content-Language:指明响应体使用的语言,如 en(英语)、zh-CN(简体中文)。
  • 空行:响应头和响应体之间也有一个空行,表示头部信息结束。

  • 响应体:服务器返回给客户端的数据,通常是 HTML 页面或其他文件。

HTTP 请求流程

当用户在浏览器中输入 URL 并按下回车时,浏览器会向服务器发送一个 HTTP 请求,服务器处理请求后返回响应,浏览器解析响应体并显示页面。该过程包括以下步骤:

  1. 用户输入 URL,浏览器发送 HTTP 请求。
  2. 请求报文中包含请求行、请求头和可能的请求体。
  3. 服务器接收到请求,处理后返回响应报文。
  4. 响应报文包含状态行、响应头和响应体。
  5. 浏览器根据响应体中的内容显示网页。

注:图片来源于网络,侵删。

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

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

相关文章

快速数据检索最佳闪存驱动器恢复下载

当你意识到你的闪存盘丢失了重要文件时,你是否曾有过心脏停跳的时刻?丢失数据可能会毁掉你的一天,并带来很大的压力,无论是重要的工作文件,你喜欢的照片,还是备份你需要保持。好消息是,在闪存驱…

Leetcode 合并区间

我们借助一个辅助链表(元素类型是一维数组)来进行结果统计。 这个算法解决了“合并区间”的问题,具体要求是给定一组区间(每个区间有开始和结束位置),如果两个区间有重叠,那么需要将它们合并成一个区间,并…

Cisco Packet Tracer超详细下载安装教程(附中文版插件)

一、安装包下载: 链接:https://pan.baidu.com/s/1RK8iQ9lJG__vBEGCYVYNSA 提取码:1lvb 压缩包解压密码:66668888,不能正常解压的,推荐使用360压缩解压 二、安装教程: 1.双击启动安装包 2.点击N…

使用功率谱密度 (PSD) 表征噪声

传递函数塑造噪声 图 1 显示了假设噪声源的频谱,该噪声源在所有频率下均表现出相同的平均功率,即 ,其中 η 是常数。 假设噪声源的频谱。 图 1. 假设噪声源的频谱。 如果我们将此噪声应用于 LTI 系统,系统的传递函数将决定不同…

基于丹摩智算平台-手把手拿下经典目标检测模型 Faster-Rcnn

文章目录 1. 前言1. 1 丹摩智算平台1.2 经典目标检测模型 Faster-Rcnn 2. 前置准备2.1 WindTerm(远程连接服务器)2.2 项目源码 3. 服务器平台配置3.1 创建实例3.2 远程链接 4. Faster-rcnn 的环境配置4.1 上传文件,解压4.2 安装所需环境 5. 数…

springboot框架VUE3学院网站系统开发mysql数据库设计java编程计算机网页源码maven项目

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

专业软件测试服务机构介绍:软件确认测试的类型和方法

随着现代科技的迅猛发展,软件开发逐渐成为各类企业发展的核心。然而,软件的质量直接关系到企业的运营效率和用户体验。因此,软件确认测试作为确保软件质量的重要环节,正受到越来越多的关注。 软件确认测试是指在软件开发周期的最…

tensorboard展示不同运行的曲线结果

运行tensorboard曲线如下: tensorboard --logdir .有时候,曲线图会展示多条曲线,以至于我们想分辨哪条线来自哪次训练都做不到了。如下图是设置smoothing-0.6的结果: smoothing可以在页面找到设置按钮,呼出设置侧边…

Llama 3.1 技术研究报告-2

3.3 基础设施、扩展性和效率 我们描述了⽀持Llama 3 405B⼤规模预训练的硬件和基础设施,并讨论了⼏项优化措施,这些措施提⾼了训练效率。 3.3.1 训练基础设施 Llama 1和2模型在Meta的AI研究超级集群(Lee和Sengupta,2022&#x…

直播美颜工具的开发详解:基于视频美颜SDK的解决方案

视频美颜SDK的出现,为开发直播美颜工具提供了一种高效的解决方案。本文将详细解析如何基于视频美颜SDK,开发一款性能优越、功能齐全的直播美颜工具。 1.视频美颜SDK的核心功能 视频美颜SDK是实现实时美颜的关键技术,其核心功能包括人脸检测、…

mysql逗号分隔的一行数据转为多行数据

原表: 结果: 方法一:如果每条数据的被逗号分隔的数量在637条以内,使用 mysql.help_topic(mysql自带的表,只有637个序号)。 select a.id,a.enclosure_ids,SUBSTRING_INDEX(SUBSTRING_INDEX(a.en…

harmonyOS 原来构建还有这么多弯弯绕绕

随着用户需求的不断增长,我们的 APP 已发展成功能丰富的超级APP,这也导致打包构建变得非常耗时,可能需要数小时,严重影响开发效率和产品迭代。通过采用模块化设计、增量构建、并行处理、缓存机制、优化依赖管理,以及云…

使用 Docker 部署 RStudio 的终极教程

一.介绍 在现代数据科学和统计分析领域,RStudio 是一个广受欢迎的集成开发环境(IDE),为用户提供了强大的工具来编写、调试和可视化 R 代码。然而,传统的 RStudio 安装可能面临环境配置复杂、版本兼容性等问题。Docker…

2.4K star的GOT-OCR2.0:端到端OCR 模型

GOT-OCR2.0是一款新一代的光学字符识别(OCR)技术,标志着人工智能在文本识别领域的重大进步。作为一款开源模型,GOT-OCR2.0不仅支持传统的文本和文档识别,还能够处理乐谱、图表以及复杂的数学公式,为用户提供…

报错解决方案

大模型-报错解决方案 百度千帆大模型 仅个人笔记使用,感谢点赞关注 百度千帆大模型 未开通付费模型 qianfan.errors.APIError: api return error, req_id: code: 17, msg: Open api daily request limit reached 可能的原因: 未开通所调用服务的付费权限&#xff0…

代码随想录算法day38 | 动态规划算法part11 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和,392.判断子序列

1143.最长公共子序列 体会一下本题和 718. 最长重复子数组 的区别 力扣题目链接(opens new window) 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的…

掌握Python自动化办公的3个核心技能,全是干货建议收藏

随着Python在办公自动化领域的广泛应用,掌握Python的相关技能变得越来越重要。本文将详细介绍Python在文件操作、数据处理以及Excel操作方面的核心技能,帮助读者提升工作效率。 掌握Python自动化办公的核心技能,主要包括以下几个方面&#x…

统信服务器操作系统进入【单用户模式】

统信服务器操作系统D版、E版、A版进入单用户模式的方式。 文章目录 前言一、问题现象二、问题原因三、解决方案1. D版问题解决方案2. E版及A版问题解决方案前言 D版又称企业版、E版又称欧拉版、A版又称龙蜥版。 单用户模式主要是在 grub2 引导时编辑内核引导,一般用于修改用…

828华为云征文 | 云服务器Flexus X实例,搭建ChatGpt:AI-OpenAI

828华为云征文 | 云服务器Flexus X实例,搭建ChatGpt:AI-OpenAI 搭建能AI-OpenAI 1、购买华为云 Flexus X 实例 Flexus云服务器X实例-华为云 (huaweicloud.com) 2、安装 Docker 的必要依赖 yum install -y yum-utils device-mapper-persistent-data lvm2…

自恢复保险丝到底是什么?一篇文章足够让你了解清楚!!!

自恢复保险丝简介: 自恢复保险丝主要由核心材料高分子聚合物复合材料体组成,它是一种可反复使用的具有自恢复特性非线性的过流保护器件,聚合物复合材料体一般由聚合物、导电微粒、无机填料等组成。 自恢复保险丝是一种过流电子保护元件&#…