当前位置: 首页 > news >正文

【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.1关于cookie:

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生成。

序号请求方法描述
1GET请求指定的页面信息,并返回实体主体。通常用于获取数据,不会对数据进行更改。
2HEAD类似于GET请求,但只返回HTTP报头,不返回文档主体。常用于检查资源是否存在或获取资源的元数据
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中,可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。如果资源不存在,可能会创建新的资源。
5DELETE请求服务器删除指定的页面或资源
6CONNECT把请求连接转换到透明的TCP/IP通道,通常用于代理服务器或建立HTTPS连接。
7OPTIONS返回服务器支持的HTTP方法。常用于跨域资源共享(CORS)的预检请求。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH对资源进行部分修改,实体中包含一个表,表中说明与该URI所表示的原内容的区别。
10MOVE请求服务器将指定的页面移至另一个网络地址。
11COPY请求服务器将指定的页面拷贝至另一个网络地址。
12LINK请求服务器建立链接关系。
13UNLINK请求服务器断开链接关系。
14WRAPPED允许客户端发送经过封装的请求。
15Extension-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负载过大请求提交的实体数据大小超过了服务器愿意或能够处理的范围。
414URI过长请求的URI长度超过了服务器能够解释的长度。
415不支持的媒体类型请求中提交的实体并不是服务器中所支持的格式。
416范围不符合请求的范围不符合。
417期望失败在请求头Expect中指定的预期内容无法被服务器满足。
422不可处理的实体请求格式正确,但服务器无法处理。
429请求过多客户端在给定的时间内发送了过多的请求

 4.3:5开头的状态码

5xx(服务器错误状态码):服务器在处理请求时发生了错误

状态码状态说明
500内部服务器错误服务器内部错误。
501未实现服务器无法处理请求。
502错误网关无效的网关。
503服务不可用服务器暂时不可用。
504网关超时网关超时。
505HTTP版本不支持服务器不支持请求的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)

坐标地址&#xff1a; <dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.60.0</version> </dependency> 工具类代码&#xff1a; import com.vladsch.flexmark.ext.tab…...

超全Deepseek资料包,deepseek下载安装部署提示词及本地部署指南介绍

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

Postman - Postman 导入 JSON 文件(导入集合或环境变量)

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

傅里叶分析之掐死教程

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

​实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”​等荣誉

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

SpringAI系列 - RAG篇(三) - ETL

目录 一、引言二、组件说明三、集成示例一、引言 接下来我们介绍ETL框架,该框架对应我们之前提到的阶段1:ETL,主要负责知识的提取和管理。ETL 框架是检索增强生成(RAG)数据处理的核心,其将原始数据源转换为结构化向量并进行存储,确保数据以最佳格式供 AI 模型检索。 …...

Leetcode2080:区间内查询数字的频率

题目描述&#xff1a; 请你设计一个数据结构&#xff0c;它能求出给定子数组内一个给定值的 频率 。 子数组中一个值的 频率 指的是这个子数组中这个值的出现次数。 请你实现 RangeFreqQuery 类&#xff1a; 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+毕业论文+开题报告+任务书+指导搭建视频

本系统包含用户、管理员两个角色。 用户角色&#xff1a;注册登录、查看首页电影信息推荐、查看电影详情并进行收藏预定、查看电影资讯、在线客服、管理个人订单等。 管理员角色&#xff1a;登录后台、管理电影类型、管理放映厅信息、管理电影信息、管理用户信息、管理订单等。…...

MySQL智障离谱问题,删了库确还存在、也不能再创建同名库

1、问题 今天跟后端朋友接毕设单子的时候&#xff0c;后端穿过来的【weather.sql】这个文件没弄好&#xff0c;导致这个【weather】数据库的数据是错的&#xff0c;因此我用datagrip的GUI界面直接右键删除&#xff0c;结果就是tmd删不掉&#xff0c;ok&#xff0c;我只能在那新…...

基于单片机的多功能门铃控制系统设计(论文+源码)

1功能设计 本课题为基于单片机的多功能门铃控制系统设计&#xff0c;主要结合单片机技术&#xff0c;门铃控制技术进行设计&#xff0c;在多功能门铃控制系统的设计中&#xff0c;将其主要的设计功能确定如下&#xff1a; &#xff08;1&#xff09;可以实现门铃的基础功能…...

分享8款AI生成PPT的工具!含测评

随着人工智能技术的飞速进步&#xff0c;制作PPT变得愈发便捷&#xff0c;仅需输入主题指令&#xff0c;便能在瞬间获得一份完整的演示文稿。尤其在制作篇幅较长的PPT时&#xff0c;手动编写每一页内容并设计格式和排版&#xff0c;不仅效率低下&#xff0c;而且耗时耗力。 本…...

”无痕模式“真的无痕?

无痕模式&#xff08;也称为 隐身模式&#xff09;&#xff1a; 不保存浏览历史&#xff1a;当你在无痕模式下浏览网页时&#xff0c;浏览器不会保存你的浏览历史。这意味着关闭无痕窗口后&#xff0c;其他人查看浏览器时看不到你访问过的网页记录。 不保存Cookies&#xff1a…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...