Http 超文本传输协议基本概念学习摘录
目录
HTTP协议
超文本传输协议
HyperText超文本
HTML超文本标记语言
HTTP协议原理
请求发送
服务器处理
响应发送
连接关闭或保持
HTTP协议版本
HTTP/0.9
HTTP/1.0
HTTP/1.1
HTTP/2
HTTP/3
HTTP请求方法
GET
POST
PUT
DELETE
HEAD
OPTIONS
HTTP请求头字段
HTTP响应状态码
HTTP协议
超文本传输协议
即超文本传输协议(HyperText Transfer Protocol),是一种用于在计算机网络上传输超文本的协议。它属于客户端-服务器协议,通过客户端向服务器发送请求,服务器则返回响应。HTTP协议是互联网上最常用的协议之一,主要用于在Web浏览器和Web服务器之间传输HTML页面、图像、视频、音频和其他类型的文件。HTTP协议通过请求/响应模型在客户端和服务器之间传输超文本内容,实现了Web应用的基本功能。
HTTP协议规定了客户端与服务器传输内容时遵守的传输格式。其交互模型是请求/响应的交互模型,即客户端发送一次请求,服务器响应一次的交互形式。请求消息由客户端发送到服务器,包括请求行(包含请求方式、URL、HTTP协议版本)、请求头部(用于描述客户端的基本信息,以多行键值对形式组成)、空行(用于分割请求头部与请求体)以及请求体(存放POST方式提交到服务器的数据,GET请求没有请求体)。
HyperText超文本
是一种使用超链接的方法将文字、图片和其他信息相互联结,形成具有相关信息体系的技术。它主要以电子文档的形式存在,如我们经常使用的HTML就是其中的一种格式。超文本在互联网上发挥着重要的作用。它的基本特性就是可以超链接文档,使得用户可以方便地从一个页面跳转到另一个页面,或者跳转到页面内的特定部分。超链接或锚(anchor)是使用标签<a>标记的,其中href属性用于指定链接的目标文件,而<a>元素的内容则是链接的标签,即用户在网页上看到的可点击的文本或图像。
HTML超文本标记语言
HyperText Markup Language是用于创建网页的标准标记语言。它不是一种编程语言,而是一种用于描述网页结构和内容的标记语言,通过元素和标签描述网页的结构和内容,并支持超链接和其他媒体内容的嵌入,为构建丰富多样的网页应用提供了基础。HTML通过一系列的元素和标签来定义网页中的不同部分,如段落、标题、图像、链接等。这些标签告诉浏览器如何渲染和展示网页内容。
HTML文档的基本结构包括头部(head)和主体(body)两部分。头部通常包含文档的元数据,如字符集定义、标题、样式表链接等;而主体则包含网页的实际内容,如文本、图片、列表、表格等。HTML的一个重要特点是其超文本性。通过超链接(hyperlink),HTML可以将不同页面或同一页面内的不同部分相互连接,实现页面的跳转和导航。这种特性使得用户可以方便地在网页之间进行浏览和访问。
此外,HTML还支持嵌入其他媒体内容,如音频、视频等,以及实现表单交互、动态更新等功能。这使得HTML成为构建丰富多样、交互性强的网页应用的基础。需要注意的是,虽然HTML定义了网页的结构和内容,但它并不直接负责网页的样式和布局。这些方面通常由CSS(层叠样式表)来控制。同时,HTML也不负责处理用户输入和动态交互,这些功能通常由JavaScript等脚本语言来实现。
HTTP协议原理
工作原理主要基于请求/响应模型,这一模型定义了客户端与服务器之间如何交互以传输超文本内容。 其主要工作原理有:
请求发送
- 客户端(如Web浏览器)根据用户操作或程序指令,生成一个HTTP请求。这个请求包含了请求方法(如GET、POST等)、请求的URL(即资源的定位符)、协议版本、请求头部(可选,包含一些元数据如浏览器类型、语言偏好等)以及请求体(对于POST等包含数据的请求)。
- 客户端将构建好的HTTP请求发送到服务器,通常是通过TCP/IP协议在互联网上进行传输。
服务器处理
- 服务器接收到HTTP请求后,会解析请求的各个部分,包括请求方法、URL和请求头等信息。
- 根据请求方法的不同,服务器会执行相应的操作。例如,对于GET请求,服务器会检索请求的资源;对于POST请求,服务器会接收客户端发送的数据并可能进行存储或处理。
- 服务器处理完请求后,会生成一个HTTP响应。响应包括状态码(表示请求处理的结果,如200表示成功)、响应头部(包含有关响应的元数据)和响应体(包含请求的资源或处理结果)。
响应发送
- 服务器将构建好的HTTP响应通过TCP/IP协议发送回客户端。
- 客户端接收到响应后,会解析响应内容并根据状态码和响应体进行相应的处理。例如,如果状态码为200,客户端通常会解析响应体中的HTML内容并在浏览器中展示。
连接关闭或保持
- HTTP/1.0版本默认在每次请求/响应后关闭TCP连接。然而,HTTP/1.1版本引入了持久连接(persistent connection)的概念,允许在多个请求/响应之间保持TCP连接打开,以减少建立和关闭连接的开销,从而提高性能。
值得注意的是,HTTP协议本身是无状态的,即服务器不会记住之前接收过的请求和响应的信息。这使得HTTP协议能够处理大量的并发请求,但也意味着如果需要维护会话状态(如用户登录状态),通常需要借助其他机制(如cookies或session)来实现。
HTTP协议版本
HTTP/0.9
HTTP的初始版本,于1991年发布。它非常简单,只支持GET方法,用于获取服务器上的HTML文档,并且服务器返回整个文档作为响应。
HTTP/1.0
于1996年发布。HTTP/1.0引入了更复杂的请求和响应模型,包括请求头部、响应状态码、响应头部等。它支持多种请求方法(GET、POST、PUT、DELETE等),增加了状态码用于表示请求结果或错误情况,并引入了Content-Type头部字段来支持多媒体类型。此外,HTTP/1.0还支持持久连接,允许在同一个TCP连接上发送多个请求和响应。
HTTP/1.1
于1997年发布。HTTP/1.1是目前最广泛使用的HTTP版本。它对HTTP/1.0进行了一系列改进,包括引入了Host头部字段、引入了缓存控制、支持分块传输编码、引入了管道化(pipelining)等。HTTP/1.1还提供了更细粒度的控制,如支持Range头部字段用于断点续传和部分内容获取,以及支持虚拟主机等。
HTTP/2
于2015年发布。HTTP/2基于Google开发的SPDY协议,并在HTTP/1.1的基础上进行了全面的改进。它引入了多路复用、二进制分帧、头部压缩、服务器推送等特性,提高了性能和效率。
HTTP/3
HTTP/3是基于QUIC协议的HTTP版本,目前仍处于实验阶段。它旨在提高性能和安全性,通过使用UDP协议替代TCP,减少延迟和提高吞吐量。HTTP/3支持连接和流的多路复用,以及零RTT握手等特性。
HTTP请求方法
主要包括以下几种:
GET
用于从指定资源中请求数据。GET请求只应检索数据,并且不对数据产生其他影响。GET请求可以缓存,可以从浏览器历史记录中查找,也可以被收藏到书签中。但请注意,GET请求在处理敏感数据时存在不安全性,因此不应使用。
POST
用于将数据发送到服务器以创建或更新资源。它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另一个下属。POST请求通常用于提交表单或上传文件。
PUT
从客户端向服务器传送的数据会取代指定的文档的内容。它类似于POST方法,但PUT方法指向了资源在服务器上的位置。
DELETE
请求服务器删除指定的资源。DELETE方法会删除URI给出的目标资源的所有当前内容。
HEAD
类似于GET请求,但返回的响应中没有具体的内容,只请求页面的首部。
OPTIONS
允许客户端查看服务器的性能,并询问支持的请求方法。它还可以用来跨域请求,检查访问权限。
此外,还有其他一些HTTP请求方法,如CONNECT、TRACE、PATCH等,这些方法各有其特定的用途和适用场景。在实际应用中,根据具体的需求和场景选择合适的HTTP请求方法非常重要。
HTTP请求头字段
头(Header) | 类型 | 说明 |
---|---|---|
User-Agent(用户-代理) | 请求 | 关于浏览器和它平台的信息,如:Mozilla5.0 |
Accept(接受) | 请求 | 客户能处理的页面类型,如text/html |
Accept-Charset(接受字符集) | 请求 | 客户能处理的页码编码方法:gzip |
Accept-Encoding(接受编码) | 请求 | 客户能处理的页码编码方法如:gzip |
Hosr(主机) | 请求 | 服务器的DNS名称,从URL中提取出来,必须 |
Referer(推荐人) | 请求 | 用户从该URL代表的页面出发访问当前请求的页面 |
Cookie | 请求 | 将以前设置的Cookie送回服务器,可用来作为会话信息 |
Date(时间) | 双向 | 消息被发送时候的日期和时间 |
Server(服务) | 响应 | 关于服务器的信息,如Microsoft-IIS/6.0 |
Content-Encoding(内容编码) | 响应 | 内容是如何被编码的如:gzip |
Content-Language(内容语言) | 响应 | 页面所使用的自然语言 |
Content-Length | 响应 | 以字节计算的页面长度 |
Content-Type(内容类型) | 响应 | 页面的MIME类型 |
Last-Modified(上次修改时间) | 响应 | 页面最后被修改的时间和日期 |
Location(位置) | 响应 | 指示用户将请求发送给别处,即重定向到另一个URL |
Set-Cookie | 响应 | 服务器希望客户保存的一个Cookie |
HTTP响应状态码
HTTP Status Code响应状态码是由服务器在响应客户端请求时返回的三位数字代码,用于表示请求的处理结果或状态。这些状态码分为五大类,每类有特定的含义和范围。
1xx - 信息性状态码
- 100 Continue:客户端应继续其请求。
- 101 Switching Protocols:服务器根据客户端的请求切换协议。
2xx - 成功状态码
- 200 OK:请求成功。
- 201 Created:请求成功并且服务器创建了新的资源。
- 202 Accepted:请求已接受,但处理尚未完成。
- 204 No Content:请求成功,但响应报文不含实体的主体部分。
3xx - 重定向状态码
- 301 Moved Permanently:请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用新的URI。
- 302 Found:请求的资源现在临时从不同的URI响应请求。
- 304 Not Modified:如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。
4xx - 客户端错误状态码
- 400 Bad Request:请求报文存在语法错误。
- 401 Unauthorized:请求需要用户认证。
- 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
- 404 Not Found:服务器无法根据客户端的请求找到资源。
5xx - 服务器错误状态码
- 500 Internal Server Error:服务器内部错误,无法完成请求。
- 502 Bad Gateway:作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
- 503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。
这只是HTTP响应状态码的一部分,实际上还有许多其他状态码,每个状态码都有其特定的含义和用途。当进行Web开发或网络调试时,理解这些状态码的含义是非常重要的。
完
相关文章:

Http 超文本传输协议基本概念学习摘录
目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字…...

模拟-算法
文章目录 替换所有的问号提莫攻击Z字形变换外观数列数青蛙 替换所有的问号 算法思路: 从前往后遍历整个字符串,找到问号之后,就遍历 a ~ z 去尝试替换即可。 class Solution {public String modifyString(String s) {char[] ss s.toCharA…...

深入了解鸿鹄工程项目管理系统源码:功能清单与项目模块的深度解析
工程项目管理软件是现代项目管理中不可或缺的工具,它能够帮助项目团队更高效地组织和协调工作。本文将介绍一款功能强大的工程项目管理软件,该软件采用先进的Vue、Uniapp、Layui等技术框架,涵盖了项目策划决策、规划设计、施工建设到竣工交付…...

Unbuntu20.04 git push和pull相关问题
文章目录 Unbuntu20.04 git push和pull使用1.下载[Git工具包](https://git-scm.com/downloads)2.建立本地仓库3.将本地仓库与github远程仓库关联4.将本地仓库文件上传到github远程仓…...
hive SQL 移位、运算符、REGEXP正则等常用函数
orderflag & shiftleft(1,14) shiftleft(1,14) SQL中使用的运算符号详解_sql中各种符号-CSDN博客 Hive函数_hive shift-CSDN博客 (内建函数(类型排序)_云原生大数据计算服务 MaxCompute(MaxCompute)-阿里云帮助中心)...

33-Java服务定位器模式 (Service Locator Pattern)
Java服务定位器模式 实现范例 服务定位器模式(Service Locator Pattern)用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术在首次请求某个服务时,服务定位器在 JNDI…...

前端小卡片:vue3路由是什么,有什么作用,该如何配置?
在 Vue 3 中,路由的处理使用了 Vue Router,它是官方提供的路由管理器。Vue Router 用于实现单页应用中的路由功能,通过将不同的 URL 映射到对应的组件,实现页面之间的切换和导航。 Vue Router 的作用包括: 实现页面之…...

Jackson 2.x 系列【2】生成器 JsonGenerator
有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…...

说说webpack中常见的Loader?解决了什么问题?
文章目录 一、是什么配置方式 二、特性三、常见的loadercss-loaderstyle-loaderless-loaderraw-loaderfile-loaderurl-loader 参考文献 一、是什么 loader 用于对模块的"源代码"进行转换,在 import 或"加载"模块时预处理文件 webpack做的事情…...
Django 铺垫
【一】基础知识点 【1】web框架的本质 Web框架本质上可以看成是一个功能强大的socket服务端用户的浏览器可以看成是拥有可视化界面的socket客服端两种通过网络请求实现数据交互 【2】浏览器发送请求 (1)HTTP协议 HTTP协议是超文本传输协议ÿ…...

浅谈C++的继承与多态(静态绑定、动态绑定和虚函数等)
今天我们来谈谈C的继承与多态😊😊😊,本篇的关键内容如下: 继承的本质及其原理派生类的构造和析构过程重载、隐藏和覆盖类的向下或向上转型静态绑定与动态绑定虚函数对类的影响虚析构函数 下面,我们将对这…...
【无人机综合考试题】
1.请选择出哪一个功能选项,在手动遥控飞行时,可以改变各通道的操作灵敏度? 行程比例在手动遥控飞行时,可以改变各通道的操作灵敏度 用于起降的遥控器中 THR、ELE 通道分别控制多旋翼无人机的什么运动? AIL(左、右移动)RUD(左、右水平旋转…...

JS精度计算的几种解决方法,1、转换成整数计算后再转换成小数,2、toFixed,3、math.js,4、bignumber.js,5、big.js
提示:学习express,搭建管理系统 文章目录 前言一、转换成整数计算后再转换成小数二、toFixed三、math.js四、bignumber.js五、big.js总结 前言 原始计算 let aNum 6.6 0.3;let bNum 6.6 - 0.2;let cNum 6.6 * 0.3;let dNum 6.6 / 0.2;console.log(…...

v77.递归
理解: 函数直接或者间接地调用自身;并且有边界条件。 1: #include <stdio.h> int main() {int result fun(3);printf("%d",result);return 0 ; } int fun(int num) {if(num 1)return num;return num fun(num-1); }思路…...
Spring Cloud微服务功能及其组件详细讲解
Spring Cloud微服务功能及其组件详细讲解 文章目录 Spring Cloud微服务功能及其组件详细讲解前言:什么是微服务?一、Spring Cloud原理简述二、核心组件1、服务发现——Nacos/Eureka/Consul1)Nacos服务发现2)Eureka服务发现3&#…...

(三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
这里写目录标题 一、colmap解算数据放入高斯1. 将稀疏重建的文件放入高斯2. 将稠密重建的文件放入高斯 二、vkitti数据放入高斯 一、colmap解算数据放入高斯 运行Colmap.bat文件之后,进行稀疏重建和稠密重建之后可以得到如下文件结构。 1. 将稀疏重建的文件放入高…...
4635: 【搜索】【广度优先】回家
题目描述 小 H 在一个划分成了nm 个方格的长方形封锁线上。 每次他能向上下左右四个方向移动一格(当然小 H 不可以静止不动), 但不能离开封锁线,否则就被打死了。 刚开始时他有满血 6 点,每移动一格他要消耗 1 点血量…...

Uibot6.0 (RPA财务机器人师资培训第1天 )RPA+AI、RPA基础语法
训练网站:泓江科技 (lessonplan.cn)https://laiye.lessonplan.cn/list/ec0f5080-e1de-11ee-a1d8-3f479df4d981(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~) 紧接着小北之前的几篇博客,友友们我们即将开展新课的学习~…...

【吊打面试官系列】Redis篇 -Redis集群的主从复制模型是怎样的?
大家好,我是锋哥。今天分享关于 【Redis集群的主从复制模型是怎样的?】 面试题,希望对大家有帮助; Redis集群的主从复制模型是怎样的? 为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所…...
高效的二进制列化格式 MessagePack 详解
目录 MessagePack 序列化原理 MessagePack 数据类型及编码方式 MessagePack 序列化与反序列化过程 MessagePack 的优势 应用场景 注意事项 小结 MessagePack (简称 msgPack)是一种高效的二进制序列化格式,可以将各种数据类型ÿ…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...