后端Web之HTTP协议基础介绍

news2024/9/20 16:42:24

目录

1.HTTP概念

2.HTTP请求协议

3.HTTP响应协议

4.HTTP协议解析


1.HTTP概念

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网数据通信的基础,允许将超文本文档(网页)从网络传输到用户的浏览器。简单来说,就是浏览器想要访问服务器,那么浏览器就得发送访问的信息数据给服务器,服务器解析这个信息数据后,再发送对应的响应数据给浏览器。其中信息数据的格式、怎么解析和怎么响应就规定在HTTP协议中。

HTTP协议的基本工作流程如下:

  1. 客户端发起请求:客户端(如浏览器)通过发送HTTP请求到服务器来请求资源。
  2. 服务器响应:服务器接收到请求后,根据请求的资源和方法,返回相应的HTTP响应。
  3. 客户端接收响应:客户端接收到服务器的响应后,根据响应内容进行相应的处理。

打开浏览器的开发工具可以看到类似以下的网络请求,其中response headers就是响应的数据,request headers就是请求的数据。它们都是文本字符串。服务器解析request文本字符串,返回response文本字符串,然后浏览器解析服务器返回的response文本字符串。

这个数据格式比较固定,它们由以下部分组成:

  • 起始行:请求行或状态行,包含方法、URL、HTTP版本等信息。
  • 头字段:包含请求或响应的附加信息,如内容类型、编码方式等。
  • 主体:请求或响应的数据部分,如HTML文档、图片等。

此外,HTTP的主要特点包括:

  1. 简单快速:客户端发送一个请求到服务器,服务器响应该请求并返回数据。
  2. 无状态:服务器在两个请求之间没有事务记忆,每个请求都是独立的。
  3. 灵活:支持多种类型的数据传输,包括文本、图片、视频等。
  4. 可靠:通过状态码和超时机制确保数据的可靠传输。
  5. 扩展性:支持自定义方法和头字段。

无状态的特点导致了http虽然快速,但无法实现很多功能,比如登录一个管理系统,管理员输入密码登陆后,想访问客户数据,但此时浏览器并不知道管理员是否已经登陆,因此要结合其他的技术

2.HTTP请求协议

HTTP协议定义了多种请求方法,最常见的包括:

  • GET:请求指定资源的表示形式,应只用于获取数据。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体内。
  • PUT:将请求体中的数据取代指定的资源的所有当前表示。
  • DELETE:请求删除指定的资源。
  • HEAD:与GET方法相同,但服务器在响应中只返回头部信息,不返回实体的主体部分。
  • OPTIONS:请求获取服务器支持的通信选项。

其中GET请求的参数通过URL传递(请求行),适用于少量数据。而POST请求的参数放在请求体中,适合大量数据的传输。

GET请求由于数据暴露在URL中,因此不太安全,不适合传输敏感信息。POST请求的数据不会显示在URL中,相对来说更安全。

常见的请求头含义:

3.HTTP响应协议

响应协议和请求协议差不多,也是由响应行、响应头、响应体组成。浏览器解析这些数据后,配合前端代码就能显示我们看到的页面了。

部分其中状态码如下:

重定向:浏览器访问A服务器,但对应资源已经挪到A服务器的其他位置或另一个服务器B上,A就发送300多的状态码和资源位置给浏览器,浏览器再去访问这个资源位置。过程由浏览器自动完成

所有状态码可以在腾讯云的开发手册里面看状态 | Status - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云 (tencent.com)

常见的响应头如下:

4.HTTP协议解析

HTTP协议的解析分为两个部分,一个是客户端,一个是服务端。在客户端(如浏览器)由HTTP库或框架自动处理,这一方面各大厂商已经提供了,浏览器都内置了解析http协议的程序。

如果我们是服务端开发者就需要通过java程序来解析浏览器发来的HTTP请求,并获取请求数据。然后给浏览器响应符合http协议的响应数据。

如果手动编写服务端程序去解析http协议,这个工作量是非常大的,而且很繁琐。但是http协议是标准的、固定的。因此有许多公司已经把这些代码都写好了,封装到软件程序中,也就是web服务器,比如Tomcat服务器。

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

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

相关文章

JVM由那些部分组成,运行流程是什么?

Java 虚拟机 (JVM) 是 Java 运行环境的核心部分,它负责执行 Java 字节码。JVM 由多个不同的组件组成,每个组件都负责不同的任务。下面我将详细介绍 JVM 的主要组成部分及其运行流程。 JVM 的组成部分 类加载器 (Class Loader): 类加载器负责读…

数据结构 位运算

基础位运算 按位与(AND) 操作符:&两个位同时位1时,结果位1,否则为0 按位或(OR) 操作符:|主要有一位是1,那么结果就是1,只有两位都是0的时候,结…

C++ 115类和对象_this指针的用途

学习内容 类和对象_this指针的用途 1.解决名称冲突 2.返回对象本身用 *this 运行结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错//1.解决名称冲突//2.返回对象本身用 *thisclass Person { public:Person(int age){//形参名称…

【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践

本文介绍一个去雾算法ChaIR的使用方法&#xff0c;可以完成图像去雾&#xff0c;也可以用于图像去雨、去噪音等任务。本文不涉及论文原理&#xff0c;只包含源代码的跑通和使用。 先展示一下效果&#xff1a; 原图去雾 论文&#xff1a;Exploring the potential of channel …

ZAN与Mysten Labs合作推进Web3基础设施开发

Mysten Labs是一家Web3基础设施公司&#xff0c;也是Sui区块链的开发公司&#xff0c;今天宣布与蚂蚁数字科技的技术品牌ZAN建立合作伙伴关系。 通过整合Sui&#xff0c;ZAN旨在加速其Web3应用程序的开发和采用。该合作将专注于为Mysten Labs在两个关键领域提供技术支持&#…

Redis 缓存预热、雪崩、穿透、击穿

缓存预热 缓存预热是什么 缓存预热就是系统上线后&#xff0c;提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候&#xff0c;先查询数据库&#xff0c;然后再将数据缓存的问题&#xff01;用户直接查询事先被预热的缓存数据&#xff01;解决方案 使用 PostConstr…

day2-网络连接网卡配置原理

1.window网卡 理解&#xff1a; window 有 2 块网卡 本地网卡 192.168.13.253 用于连接外网 vmnet8 10.0.0.1(装虚拟机自动生成的 如果没有自动生成…) 虚拟机添加 2 块网卡&#xff1a; 第一块网卡 NAT 模式 添加网卡的时候设置 NAT 模式 2 个作用&#xff0c;用于连接 wi…

Linux服务管理-Nginx进阶

通常会通过rewrite将用户的80请求转化为443请求&#xff0c;也就意味着Nginx需要去做虚拟主机&#xff0c;一个80端口的虚拟主机和一个443端口的虚拟主机&#xff0c;当访问80端口的虚拟主机时返回一个信息让用户去访问443端口的虚拟主机。

技术证书认证-附考试答案-AIGC与大模型通识-英特尔大湾区科技创新中心证书认证

目录 课程简介 面向人群 考核步骤 试题答案 知孤云出岫主页 课程以及考试链接&#xff1a;AIGC与大模型通识 - 英特尔大湾区科技创新中心 【英特尔大湾区科技创新中心】公益新课《AIGC与大模型通识》上线官网&#xff01;首期结业认证进行中&#xff0c;提升AI应用技能&…

解决Element-ui el-tree数据与显示不对应的问题

如图&#xff1a; 后端返回的权限列表&#xff0c;并没有列表这一项&#xff0c;但是由于父节点 版本打包 为选中状态&#xff0c;导致所有子节点都为选中状态。 实现代码如下&#xff1a; <el-treeref"tree":data"records"show-checkboxnode-key&quo…

RuoYi-Vue新建模块

一、环境准备 附:RuoYi-Vue下载与运行 二、新建模块 在RuoYi-Vue下新建模块ruoyi-test。 三、父pom文件添加子模块 在RuoYi-Vue的pom.xml中,引入子模块。 <dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-test</artifactId>&…

【AI人工智能】文心智能体 - 你的专属车牌设计师

引言 自AI盛行以来&#xff0c;不断有各种各样的人工智能产品崭露头角。我们逐步跟着不断产生的人工智能来使自己的工作和生活变得更加智能化&#xff01;那么我们是否能够创造一款专属于自己的人工智能产品呢&#xff1f; 文心智能体平台就给我们提供了这样的机会&#xff0c…

品牌维价的含义和方法

品牌维价是指通过一系列手段和方法&#xff0c;对品牌产品的价格进行统一管理和控制&#xff0c;确保品牌在各个销售渠道都能保持合理稳定的价格体系&#xff0c;从而保障品牌自身以及各级经销商的合理利润。 常见的品牌维价方法可以参考下面这些 品牌自我管控的方法&#xff…

8.2.数据库基础技术-数据模型

概念模型是从用户的角度进行建模的&#xff0c;是现实世界到信息世界的第一抽象&#xff0c;是真正的实体-联系模型。关系模型是二维表的形式表示的实体-联系模型&#xff0c;是将实体-联系模型转换而来的&#xff0c;经过开发人员设计的&#xff1b;网状模型表示实体类型及其实…

【背包蛙】游戏 高端链游 链游开发

#游戏#链游 #深圳软件开发公司#游戏开发公司 以背包整理和物品摆放为核心的策略博弈 那么以背包中的物品&#xff0c;我们就开始了冒险之旅——角色固定拥有3点AP&#xff0c;盾牌或者剑以及后续获得的其他武器&护甲使用绝大部分都需要AP(也包含很多伤害低&次数也受限…

计算数学精解【12】-fortran计算精解(1)

文章目录 概述hello,world环境接收输入与输出 读取csv文件if and select case循环formatread,write format 概述 FORTRAN是英文“FORmulaTRANslator”的缩写&#xff0c;译为“公式翻译器”&#xff0c;它是世界上最早出现的计算机高级程序设计语言&#xff0c;广泛应用于科学…

2024.8.13-算法学习(原创+转载)

一、什么是张量并行&#xff08;Tensor Parallelism&#xff09; &#xff1f; 张量并行&#xff08;Tensor Parallelism&#xff09; 是一种分布式矩阵算法。 随着模型越来越大&#xff0c;模型内的矩阵也越来越大。一个大矩阵的乘法可以拆分成多个小矩阵的运算&#xff0c;…

文件上传漏洞(四,靶场详解)

前言&#xff1a; 本文基于github上的upload-labs&#xff0c;PHP study以及bp抓包软件进行操作。 靶场环境搭建及pass-1.pass-2请转到&#xff1a; 文件上传漏洞&#xff08;二&#xff0c;靶场搭建及漏洞利用&#xff09; 文件上传漏洞&#xff08;三&#xff0c;靶场详解…

【机器学习西瓜书学习笔记——半监督学习】

机器学习西瓜书学习笔记【第十二章】 第十三章 半监督学习13.1 未标记样本13.2 生成式方法13.3 半监督 S V M SVM SVM基本思想优点和注意事项适用场景 13.4 图半监督标签传播算法多类标签传播算法Label PropagationLabel Spreading 13.5 基于分歧的方法数据视图协同训练 13.6 半…

映客基于Apache SeaTunnel 打造高效的一站式数据集成平台

背景 随着业务的增加&#xff0c;数据集成任务大量增长&#xff0c;越来越多的数据源的需要支持&#xff0c;原有的系统已经无法完全支撑现有体量。 现有的数据集成平台短板慢慢展现导致部分业务线无法快速对接。数据源的架构在变得繁多和复杂,数据应用也逐渐变得更加垂直和场…