简单了解 HTTP 基础知识

HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应用于物联网(IoT)中的数据和命令传输。

HTTP 协议的第一个版本只有一个方法,即 GET,用于从服务器请求页面。服务器的响应总是一个 HTML 页面。要了解 HTTP 协议最初的简单设计,请参阅原始规范,该规范文档仅有一页。

从最初的 0.9 版本开始,HTTP 已经发展了几个版本。当前的版本是 1.1,并于 2014 年最后一次修订。

工作原理

HTTP 作为互联网协议之一,它是基于文本的命令和响应协议,使用客户端-服务器通信模型。

HTTP 协议基础

客户端发出请求,服务器做出响应。HTTP 协议是无状态协议,意味着服务器不需要存储会话信息,每个请求都是独立的。更多信息

这意味着:

  • 所有请求来自客户端(如您的浏览器)。
  • 服务器对请求作出响应。
  • 请求(命令)和响应均为可读文本格式。
  • 请求彼此独立,服务器不需要跟踪请求。

请求与响应结构

请求和响应的消息结构相同,如下所示:

HTTP 请求响应结构

一个请求包括:

命令或请求 + 可选的头部 + 可选的内容体

一个响应包括:

状态码 + 可选的头部 + 可选的内容体

使用简单的 CRLF(回车和换行)组合来分隔各部分,单独的空行(CRLF)表示头部结束。

如果请求或响应包含消息体,则这一情况在头部中表明

消息体的存在通过内容长度(Content-Length)传输编码(Transfer-Encoding) 头域来信号化。请求消息的构架与方法语义无关,即使该方法没有定义任何消息体的用途。 – 参见 RFC 7230第 3.3 节。

请注意:消息体后不跟随 CRLF。参见 RFC 7230 第 3.5 节

HTTP 请求详解

我们之前已经看到了一般的请求和响应格式,现在我们将更详细地介绍请求消息。

起始行是必须的,其结构如下:

方法 + 资源路径 + 协议版本

例如,如果我们尝试访问 www.testsite5.com 上的网页 testpage.htm,请求的起始行将是:

GET /test.htm HTTP/1.1

其中:

  • GET 是方法
  • /testpage.htm 是资源的相对路径
  • HTTP/1.1 是我们使用的协议版本

注释:

  1. 相对路径不包括域名。
  2. Web 浏览器使用我们输入的 URL 来创建资源的相对 URI

注意:  URL(统一资源定位符)用于网页,它是URI(统一资源标识符)的一个例子。

浏览器实际上不显示 HTTP 请求,只能通过特殊工具如 http header live(Firefox)  查看。

HTTP 与 URL

大多数人熟悉在 Web 浏览器中输入 URL。通常看起来像这样:

URL 示例

URL 还可以包含通常由浏览器隐藏的端口,但您可以手动包括它,如下图所示:

带端口的URL示例

这告知网页浏览器资源的地址以及检索资源所使用的协议 (HTTP)

HTTP 是从服务器到客户端传输资源(网页、图片、视频等)的传输协议。

HTTP 响应和响应代码

每个请求都有一个响应。响应包括:

  • 状态码描述
  • 一个或多个可选的头部
  • 可选的消息主体,可以包括多行,甚至二进制数据

响应状态码分为 5 组,每组有其含义和三位数字代码:

  • 1xx – 信息性
  • 2xx – 成功
  • 3xx – 多种选择
  • 4xx – 客户端错误
  • 5xx – 服务器错误

例如,一个成功的页面请求将返回一个 200 响应码,一个不成功的请求将返回一个 400 响应码。

您可以在这里找到完整的列表及其含义。

请求响应示例

我们将检查访问简单网页(testpage.htm)时的请求和响应。

这是我在浏览器地址栏中输入的:

浏览器请求

这是浏览器显示的响应:

浏览器响应

以下是幕后发生的 HTTP请求-响应 的屏幕截图:

图片.png

注意,浏览器自动插入请求头,同样地,Web 服务器也自动插入响应头。请求中没有正文内容。响应中的正文内容是网页,在浏览器中显示,并不由实时头部工具显示。

请求类型

到目前为止,我们还未提及请求类型,但我们在示例中已经见到了 GET 请求类型。

GET 请求 类型或方法用于从 Web 服务器请求资源。GET 是最常用的请求类型,并且是原始 HTTP 规范中唯一的请求类型。

请求类型、方法或动词

HTTP 协议现在支持 8 种请求类型,也称为方法或动词,它们是:

  • GET – 从服务器请求资源
  • POST – 向服务器提交资源(例如,文件上传)
  • PUT – 与 POST 相似,但用于替换资源
  • DELETE – 从服务器删除资源
  • HEAD – 类似 GET,但只返回头部而不返回内容
  • OPTIONS – 获取资源的选项
  • PATCH – 对资源应用修改
  • TRACE – 执行消息回环

在今天的 Internet 上,GET(获取网页)和 POST(提交 Web 表单)方法是最常使用的。

其他方法在与 Web 和物联网 APIs 工作时使用,尤其是 PUT、DELETE 和 HEAD。

  • 源于:Introduction to HTTP : Understanding HTTP Basics

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

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

相关文章

算法学习——LeetCode力扣补充篇8(146. LRU 缓存、 215. 数组中的第K个最大元素、25. K 个一组翻转链表)

算法学习——LeetCode力扣补充篇8 146. LRU 缓存 146. LRU 缓存 - 力扣(LeetCode) 描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化…

weblogic JSP action的配置

action(如xxx.do)可以在Java文件中通过注解的方式配置,也可以在web.xml中进行配置 在java文件中配置的场合 WebServlet(xxxx.do) 并实现支持的方法:doGet或doPost等 或者 WebServlet(xxxx.do) 并实现service方法 所有method的处理方法都会…

华为 2024 届实习招聘——硬件-电源机试题(四套)

华为 2024 届实习招聘——硬件-电源机试题(四套) 部分题目分享,完整版带答案(有答案,答案非官方,未仔细校正,仅供参考)(共四套) 获取(WX:didadidadidida313&…

【保姆级讲解docker 的常用命令】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

设计模式-命令模式(Command)

1. 概念 命令模式(Command Pattern)是一种行为型设计模式,也被称为动作模式或事务模式。它的核心思想是将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化。对请求排队或记录,以及支持可撤销的操作…

Excel高效办公:人力资源管理(AI版)

AI人力资源管理一本通:147个“温馨提示”53个“教您一招”,掌握使用Excel高效完成人力资源管理工作的“心法”,助你早做完、不加班。 一本书掌握人力资源高效管理的“心法”! 案例丰富,参考性强:本书不是…

Web3与社会契约:去中心化治理的新模式

在数字化时代,技术不断为我们提供新的可能性,而Web3技术作为一种基于区块链的创新,正在引领着互联网的下一波变革。它不仅改变了我们的经济模式和商业逻辑,还对社会契约和权力结构提出了全新的挑战和思考。本文将深入探讨Web3的基…

excel 无法正确处理 1900-03-01 前的日期

问题由来:excel 用公式 TEXT(A1,"yyyy-mm-dd") 转日期时,当A1 的值等于59 的时候,返回值是1900-02-28;当A1 的值等于61 的时候,返回值是1900-03-01;那么当 A1的值为 60 的时候,返回值…

【iOS】——SDWebImage源码学习

文章目录 一、SDWebIamge简介二、SDWebImage的调用流程SDWebImage源码分析1.UIImageViewWebCache层2.UIViewWebCache层3.SDWebManager层4.SDWebCache层5.SDWebImageDownloader层 一、SDWebIamge简介 SDWebImage是iOS中提供图片加载的第三方库,可以给UIKit框架中的控…

C语言【数组】

一、数组基本语法 1. 什么是数组 数组是c语言的一种数据结构,用于存储一组具有相同数据类型的数据; 数组中每个元素可以通过下标进行访问,索引从0开始,最大值为数组长度-1。 2. 数组的使用 类型 数组名[元素个数]; int arr[5]…

ICV:《中美量子产业融资比较分析》

近日,全球前沿科技咨询公司ICV发布了A Comparative Analysis of Quantum Industry Financing in the U.S and China(美国和中国量子产业融资比较分析)报告。该报告旨在对中美两国在量子技术领域的投融资情况进行比较分析,探讨其差…

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示16行点x64列点字模串的应用

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示16行点x64列点字模串的应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显…

MySQL 试图

视图功能在 5.0 以后的版本启用 视图是一张虚表。数据表确实包含了具体数据并且保存到硬盘中的实表。视图使用数据检索语句动态生 成的一张虚表。每一次数据服务重启或者系统重启之后,在数据库服务启动期间,会使用创建视图的语 句重新生成视图中的数据&…

详解UART通信协议以及FPGA实现

文章目录 一、UART概述二、UART协议帧格式2.1 波特率2.2 奇校验ODD2.3 偶校验EVEN 三、UART接收器设计3.1 接收时序图3.2 Verilog代码3.3 仿真文件测试3.4 仿真结果3.5 上版测试 四、UART发送器设计4.1 发送时序图4.2 Verilog代码4.3 仿真文件测试4.4 仿真结果4.5 上板测试 五、…

用html画一个睡觉的熊动画

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>睡觉的熊动画</title><link rel"stylesheet" href"./style.css"> </head><body><div id"contain…

免费的 ChatGPT、GPTs、AI绘画(国内版)

&#x1f525;博客主页&#xff1a;白云如幻❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚…

袁庭新ES系列14节 | 搭建Elasticsearch集群

前言 单节点的Elasticsearch需要在处理大量数据的时候需要消耗大量内存和CPU资源&#xff0c;数据量大到一定程度就会产生处理瓶颈&#xff0c;甚至会出现宕机。 为了解决单节点ES的处理能力的瓶颈及单节点故障问题&#xff0c;我们考虑使用Elasticsearch集群。接下来袁老师带…

【前后端的那些事】SpringBoot 基于内存的ip访问频率限制切面(RateLimiter)

文章目录 1. 什么是限流2. 常见的限流策略2.1 漏斗算法2.2 令牌桶算法2.3 次数统计 3. 令牌桶代码编写4. 接口测试5. 测试结果 1. 什么是限流 限流就是在用户访问次数庞大时&#xff0c;对系统资源的一种保护手段。高峰期&#xff0c;用户可能对某个接口的访问频率急剧升高&am…

记录一下易语言post get使用WinHttp的操作

最近在学易语言&#xff0c;在进行通讯的时候&#xff0c;出现一些问题&#xff0c;现在记录下来&#xff0c;避免以后继续忘记&#xff0c; 先声明文本型变量jsonPostData jsonPostData &#xff1d; “{hostname:” &#xff0b; hostnameTxt &#xff0b; “,hardcode:” &…

【ARM 裸机】I.MX 启动方式之启动头文件 2

接上一节&#xff1a;【ARM 裸机】I.MX 启动方式之启动头文件 1&#xff1b; 2.3、DCD DCD&#xff0c;Device Configuration Data &#xff0c;就是配置 6ULL 寄存器的&#xff0c;DCD 数据最大限制 1768 字节&#xff1b; CCGR0 是不是很熟悉&#xff1f;对&#xff0c;在…