【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)
🎁个人主页:我们的五年
🔍系列专栏:Linux网络编程
🌷追光的人,终会万丈光芒
🎉欢迎大家点赞👍评论📝收藏⭐文章
Linux网络编程笔记:
https://blog.csdn.net/djdjiejsn/category_12885098.html
前言:
前面讲了HTTP的请求,响应格式。但是里面的知识点还没有细讲。报文里面的内容没有讲。这篇就是对HTTP的详细讲解。
目录
1.简单信息
1.1HTTP的基本信息:
1.2URL网址:
2.请求格式:
2.1基本格式:
3.请求方法:
3.1GET方法:
3.2POST方法:
3.3PUT方法:
3.4HEAD方法:
3.5DELETE方法:
3.6OPTIONS方法:
4.HTTP响应状态码(了解):
4.1:1开头的状态码
4.2:2开头的状态码
4.3:3开头的状态码
4.3:4开头的状态码
4.3:5开头的状态码
5.重定向:
6.报头header
6.2关于session
6.3关于connection
1.简单信息
1.1HTTP的基本信息:
HTTP的英文是:(HyperText Transfer Protocol)超文本传输协议首字母的缩写。
超文本可以添加链接,有了链接,就可以从一个网站到另一个网站,可以传输图片,视频,音频,
超文本(Hypertext)是一种通过链接将文本的不同部分或不同文本之间相互连接的文本结构。
超文本最重要的部分就是链接功能了。
HTTP协议就是定义了浏览器(客户端Client)和服务器(服务端Server)的协议。HTTP是浏览器和服务器之间通信的基础。客户端给服务器发送请求,然后服务器收到以后,对请求进行处理,然后给客服端回响应。响应的可能是服务器上的资源(GET方法),或者提交资源(POST方法)……
HTTP是无连接的,无状态的协议,每次请求都要建立新的连接,服务器也不会保存客户端的信息。对于网站让我们登录进去可以,就认识我们了,以后每次请求都认识我们了,是服务器里面cookie的功劳。
1.2URL网址:
然后URL网址的基本信息,之前也讲过了,Encode,DeCode,下面的图讲的也是非常的清楚。
关于Encode,DeCode就可以去看这篇文章:
【Linux网络编程】:URL(encode),HTTP协议,telnet工具-CSDN博客
2.请求格式:
基本的格式这篇文章也讲了:(点击进入就可以)
【Linux网络编程】:URL(encode),HTTP协议,telnet工具-CSDN博客
2.1基本格式:
基本格式就是是这样,然后就是讲里面的具体参数了。
请求报头Header会有一个参数Content-Length来标识请求正文的长度。
空行后面的内容就是请求正文。
3.请求方法:
请求方法有很多种,用了区分请求是要干什么,服务器要知道客户端要干什么才有后面的。
虽然请求有很多种,但是每种不可能都执行,大部分都是不允许的,比如向服务器上次资源(百度网盘,这种服务方向的除外),基本的是不允许随便上传,或者再向写文章,在抖音上产视频,也只是开放了部分的资源。部分接口。在合理,正常功能内上传资源,删除资源肯定是没问题了。
下面的表格由Kimi生成。
序号 | 请求方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。通常用于获取数据,不会对数据进行更改。 |
2 | HEAD | 类似于GET请求,但只返回HTTP报头,不返回文档主体。常用于检查资源是否存在或获取资源的元数据。 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中,可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。如果资源不存在,可能会创建新的资源。 |
5 | DELETE | 请求服务器删除指定的页面或资源。 |
6 | CONNECT | 把请求连接转换到透明的TCP/IP通道,通常用于代理服务器或建立HTTPS连接。 |
7 | OPTIONS | 返回服务器支持的HTTP方法。常用于跨域资源共享(CORS)的预检请求。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 对资源进行部分修改,实体中包含一个表,表中说明与该URI所表示的原内容的区别。 |
10 | MOVE | 请求服务器将指定的页面移至另一个网络地址。 |
11 | COPY | 请求服务器将指定的页面拷贝至另一个网络地址。 |
12 | LINK | 请求服务器建立链接关系。 |
13 | UNLINK | 请求服务器断开链接关系。 |
14 | WRAPPED | 允许客户端发送经过封装的请求。 |
15 | Extension-method | 在不改动协议的前提下,可增加另外的方法。 |
3.1GET方法:
🍟作用:用于请求URL的指定资源。
🍟示例:GET(请求方法) /index.html(URL) HTTP/1.1(HTTP版本)。(请求行,要请求的就是服务器下面的iindex.html,当然可以对这个路径进行解析,在开头增加目录)。
🍟特性:指定资源经服务器端解析后返回响应内容。
3.2POST方法:
🍟用途:用于传输实体的主体,通常用于提交表单数据。
🍟示例:POST submit.cgi HTTP/1.1
🍟特性:可以发送大量的数据给服务器,并且数据包含在请求体中。
3.3PUT方法:
🍟用途:用于传输文件,将请求报文主体中的文件保存到请求 URL 指定的位置。
🍟示例:PUT /example.html HTTP/1.1
🍟特性:不太常用,但在某些情况下,如 RESTful API 中,用于更新资源。
3.4HEAD方法:
🍟用途:与 GET 方法类似,但不返回报文主体部分,仅返回响应头。
🍟示例:HEAD /index.html HTTP/1.1
🍟特性:用于确认 URL 的有效性及资源更新的日期时间等。
3.5DELETE方法:
🍟用途:用于删除文件,是 PUT 的相反方法。
🍟示例:DELETE /example.html HTTP/1.1
🍟特性:按请求 URL 删除指定的资源。
3.6OPTIONS方法:
🍟用途:用于查询针对请求 URL 指定的资源支持的方法。
🍟示例:OPTIONS * HTTP/1.1
🍟特性:返回允许的方法,如 GET、POST 等。
4.HTTP响应状态码(了解):
虽然定了规定的状态码,但是各个浏览器器直接没有好好的遵循。各个浏览器之间是竞争关系,状态码也各不一样。对于对于状态码浏览器来说,状态码也没那么重要。
所以在不同的浏览器之间,相同的状态码表示不同的信息。
前端工作人员可能也不会严格遵循,毕竟还要做兼容性检查。不同状态码也能被解释。
4.1:1开头的状态码
1xx(信息性状态码):请求已被接受,正在继续处理。
具体的看下表:
100,主要是在上传大型文件的时候,表示服务器已经接受到了,正在处理。
状态码 | 状态 | 说明 |
---|---|---|
100 | 继续 | 请求者应当继续提出请求。服务器已收到请求的第一部分,正在等待其余部分。 |
101 | 切换协议 | 请求者已要求服务器切换协议,服务器已确认并准备切换。 |
102 | 继续执行 | 由WebDAV扩展的状态码,代表处理将被继续执行。 |
103 | 早期提醒 | 利用服务器思考时间来传递内容,当浏览器向服务器发出请求时等待回应时,由边缘网络线发送页面载入提示给浏览器。 |
4.2:2开头的状态码
2xx(成功状态码):请求已成功被服务器处理。
状态码 | 状态 | 说明 |
---|---|---|
200 | 成功 | 服务器已成功处理了请求,通常表示服务器提供了请求的网页。 |
201 | 已创建 | 请求成功并且服务器创建了新的资源。 |
202 | 已接受 | 服务器已接受请求,但尚未处理。 |
203 | 非授权信息 | 服务器已成功处理了请求,但返回的信息可能来自另一来源。 |
204 | 无内容 | 服务器成功处理了请求,但没有返回任何内容。 |
205 | 重置内容 | 服务器成功处理了请求,但没有返回任何内容,要求客户端重置视图。 |
206 | 部分内容 | 服务器成功处理了部分GET请求。 |
207 | 多种状态 | 由WebDAV状态码,代表之后的消息体将是一个XML消息,且可能依照之前子请求数量不同,含一系列独立的响应代码 |
4.3:3开头的状态码
3xx(重定向状态码):客户端需要进一步操作才能完成请求
状态码 | 状态 | 说明 |
---|---|---|
300 | 多种选择 | 针对不同请求,服务器可执行多种操作。 |
301 | 永久移动 | 请求的网页已永久移动到新位置。 |
302 | 资源已找到(临时移动) | 告诉客户端,请到另一处URL获取需要的资源。 |
303 | 查看其他位置 | 请求者应当对不同的位置使用单独的GET请求来获取资源。 |
304 | 资源未修改 | 自从上次请求后,网页未做过修改。 |
305 | 使用代理 | 请求者只能使用代理访问所请求的资源。 |
307 | 临时重定向 | 服务器临时重定向请求到另一个URL。 |
308 | 永久重定向 | 请求的资源永久移动,客户端应使用新URL |
4.3:4开头的状态码
请求有错误,客户端可能需要修改请求
状态码 | 状态 | 说明 |
---|---|---|
400 | 请求错误 | 请求有语法错误。 |
401 | 未授权 | 请求未授权。 |
403 | 禁止 | 服务器拒绝执行。 |
404 | 未找到 | 请求的资源不存在。 |
405 | 方法不允许 | 请求方法不被允许。 |
406 | 不接受 | 服务器无法提供请求的资源。 |
407 | 需要代理认证 | 需要代理服务器认证。 |
408 | 请求超时 | 请求超时。 |
409 | 冲突 | 请求与资源的当前状态冲突。 |
410 | 已删除 | 请求的资源已被永久删除。 |
411 | 需要长度 | 服务器拒绝处理当前请求,因为请求的内容长度未定义。 |
412 | 先决条件失败 | 服务器在验证请求的头字段中给出的先决条件时,未能满足其中的一个或多个。 |
413 | 负载过大 | 请求提交的实体数据大小超过了服务器愿意或能够处理的范围。 |
414 | URI过长 | 请求的URI长度超过了服务器能够解释的长度。 |
415 | 不支持的媒体类型 | 请求中提交的实体并不是服务器中所支持的格式。 |
416 | 范围不符合 | 请求的范围不符合。 |
417 | 期望失败 | 在请求头Expect中指定的预期内容无法被服务器满足。 |
422 | 不可处理的实体 | 请求格式正确,但服务器无法处理。 |
429 | 请求过多 | 客户端在给定的时间内发送了过多的请求 |
4.3:5开头的状态码
5xx(服务器错误状态码):服务器在处理请求时发生了错误
状态码 | 状态 | 说明 |
---|---|---|
500 | 内部服务器错误 | 服务器内部错误。 |
501 | 未实现 | 服务器无法处理请求。 |
502 | 错误网关 | 无效的网关。 |
503 | 服务不可用 | 服务器暂时不可用。 |
504 | 网关超时 | 网关超时。 |
505 | HTTP版本不支持 | 服务器不支持请求的HTTP版本 |
5.重定向:
重定向有两种,一种是临时重定向,还有一种是永久重定向。不管是永久重定向还有临时重定向,都是和报头中的location有关的,当请求的URL需要重定向到新的URL时,header就会带location信息。
比如下面就是302临时重定向,错误码描述是Found,然后需要重定向到https://www.new-url.com。(这里)
HTTP/1.1 302 Found\r\n
Location: https://www.new-url.com\r\n
6.报头header
报文里面可能下面以下信息,也可以一个都没有,比如有正文body,但是没有Content,浏览器一样可以解释,浏览器还是很厉害的。
然后就是我们可以根据请求的资源区分是什么类型的文本,HTML还是TXT,还是其他的。
Content-Type: 数据类型(text/html 等)。
Content-Length: Body 的长度。
Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
6.1关于cookie:
cookie会保存我们的信息,比如我们登陆一个网站,输入了用户名,密码。下次访问这个网站的时候,就直接把这些信息加到HTTP请求里面。我们就不需要进行登录了,然后就可以查看这些信息了,当然这些信息我们解析不出来是什么。
6.2关于session
session的话,就是防止我们的信息泄露,再保存了cookie信息的时候,只用代号进行传输,当然代号也可以被盗走,但至少我们具体的用户名,信息不会盗走。也就是可能黑客可以登录盗走的QQ,但是没有办法知道密码,进行改密码。
6.3关于connection
这个就表示连接的信息:需要长连接还是短连接。HTTP1.1版本默认使用长连接,即报头没有connection信息的时候,就是和服务器建立长的连接。HTTP1.0使用的是短连接,要长连接需要再报头中加入Connection: keep-alive。
HTTP/1.1:在 HTTP/1.1 协议中,默认使用持久连接。当客户端和服务器都不明确指定关闭连接时,连接将保持打开状态,以便后续的请求和响应可以复用同一个连接。
HTTP/1.0:在 HTTP/1.0 协议中,默认连接是非持久连接。如果希望在 HTTP/1.0上实现持久连接,需要在请求头中显式设置 Connection: keep-alive。
相关文章:

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 Linux网络编程笔记: https://blog.cs…...
SQL进阶技巧:如何统计用户跨端消费行为?
目录 0 问题描述 2 问题剖析 技术难点解析 3 完整解决方案 步骤1:构造全量日期平台组合 步骤2:用户行为标记 步骤3:最终关联聚合 4 核心技巧总结 5 复杂度评估 往期精彩 0 问题描述 支出表: Spending +-------------+---------+ | Column Name | Type | +-----…...

Fiddler笔记
文章目录 一、与F12对比二、核心作用三、原理四、配置1.Rules:2.配置证书抓取https包3.设置过滤器4、抓取App包 五、模拟弱网测试六、调试1.线上调试2.断点调试 七、理论1.四要素2.如何定位前后端bug 注 一、与F12对比 相同点: 都可以对http和https请求进行抓包分析…...

基于SpringBoot+Vue的老年人体检管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

51c自动驾驶~合集51
我自己的原文哦~ https://blog.51cto.com/whaosoft/13320191 #毫末最新OAD 轨迹偏移学习助力端到端新SOTA~ 端到端自动驾驶技术在近年来取得了显著进展。在本研究中,我们提出了轨迹偏移学习,将传统的直接预测自车轨迹,转换为预测相对于…...
Redis 监视器:深入解析与实战指南
Redis 监视器:深入解析与实战指南 引言 随着互联网技术的飞速发展,企业对实时数据处理和高并发场景的需求日益增长。Redis作为一款高性能的内存数据库,在各个领域中得到了广泛应用,包括缓存、消息队列、实时数据分析等。然而&am…...

Java8适配的markdown转换html工具(FlexMark)
坐标地址: <dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.60.0</version> </dependency> 工具类代码: import com.vladsch.flexmark.ext.tab…...

超全Deepseek资料包,deepseek下载安装部署提示词及本地部署指南介绍
该资料包涵盖了DeepSeek模型的下载、安装、部署以及本地运行的详细指南,适合希望在本地环境中高效运行DeepSeek模型的用户。资料包不仅包括基础的安装步骤,还提供了68G多套独立部署视频教程教程,针对不同硬件配置的模型选择建议,以…...

Postman - Postman 导入 JSON 文件(导入集合或环境变量)
一、Postman 中的 JSON 文件 在 Postman 中导入的 JSON 文件通常是指集合(Collection)或环境变量(Environments) 集合是 Postman 中用于管理 API 请求的一种方式,可以通过导入 JSON 文件来加载一个集合 环境变量是 P…...

傅里叶分析之掐死教程
https://zhuanlan.zhihu.com/p/19763358 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析 不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多…...

实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”等荣誉
近日,浙江省经信厅正式公布《2024 年浙江省人工智能应用场景、应用标杆企业、人工智能服务商及 “数智优品” 名单》。 实在智能获评浙江省“人工智能服务商”,核心产品 “实在 Agent 智能体” 入选 “数智优品”。一同获此殊荣的还有宇树科技、云深处科…...

SpringAI系列 - RAG篇(三) - ETL
目录 一、引言二、组件说明三、集成示例一、引言 接下来我们介绍ETL框架,该框架对应我们之前提到的阶段1:ETL,主要负责知识的提取和管理。ETL 框架是检索增强生成(RAG)数据处理的核心,其将原始数据源转换为结构化向量并进行存储,确保数据以最佳格式供 AI 模型检索。 …...
Leetcode2080:区间内查询数字的频率
题目描述: 请你设计一个数据结构,它能求出给定子数组内一个给定值的 频率 。 子数组中一个值的 频率 指的是这个子数组中这个值的出现次数。 请你实现 RangeFreqQuery 类: RangeFreqQuery(int[] arr) 用下标从 0 开始的整数数组 arr 构造…...
北斗导航 | 周跳探测算法(matlab源码)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 周跳 1. 高次差法2. 相位减伪距法3. TurboEdit算法(MW+GF组合)4. 多项…...
Nginx实战_高性能Web服务器与反向代理的配置全解
1. 引言 1.1 Nginx简介 Nginx(发音为 “engine-x”)是一款轻量级、高性能的HTTP服务器和反向代理服务器。它以其高并发处理能力和低资源消耗而闻名,广泛应用于互联网企业中。Nginx不仅可以作为静态文件服务器,还可以通过反向代理功能与后端应用服务器协同工作。 1.2 Ngi…...

基于微信小程序的电影院订票选座系统的设计与实现,SSM+Vue+毕业论文+开题报告+任务书+指导搭建视频
本系统包含用户、管理员两个角色。 用户角色:注册登录、查看首页电影信息推荐、查看电影详情并进行收藏预定、查看电影资讯、在线客服、管理个人订单等。 管理员角色:登录后台、管理电影类型、管理放映厅信息、管理电影信息、管理用户信息、管理订单等。…...

MySQL智障离谱问题,删了库确还存在、也不能再创建同名库
1、问题 今天跟后端朋友接毕设单子的时候,后端穿过来的【weather.sql】这个文件没弄好,导致这个【weather】数据库的数据是错的,因此我用datagrip的GUI界面直接右键删除,结果就是tmd删不掉,ok,我只能在那新…...

基于单片机的多功能门铃控制系统设计(论文+源码)
1功能设计 本课题为基于单片机的多功能门铃控制系统设计,主要结合单片机技术,门铃控制技术进行设计,在多功能门铃控制系统的设计中,将其主要的设计功能确定如下: (1)可以实现门铃的基础功能…...

分享8款AI生成PPT的工具!含测评
随着人工智能技术的飞速进步,制作PPT变得愈发便捷,仅需输入主题指令,便能在瞬间获得一份完整的演示文稿。尤其在制作篇幅较长的PPT时,手动编写每一页内容并设计格式和排版,不仅效率低下,而且耗时耗力。 本…...
”无痕模式“真的无痕?
无痕模式(也称为 隐身模式): 不保存浏览历史:当你在无痕模式下浏览网页时,浏览器不会保存你的浏览历史。这意味着关闭无痕窗口后,其他人查看浏览器时看不到你访问过的网页记录。 不保存Cookies:…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...