【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

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

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

相关文章

Vue3 打造 Windows 桌面个性高效组件工具

软件介绍 Widgets 这款基于 Vue3 构建的开源 Windows 桌面小部件工具超实用。 其多样化组件库涵盖超 20 种,从倒计时、打工进度等实用工具,到抖音热榜等实时资讯组件应有尽有,各组件独立运行,满足多场景需求。 高度自定义布局支持…

Tailwind CSS 和 UnoCSS简单比较

一、Tailwind CSS 和 UnoCSS简介 Tailwind CSS 和 UnoCSS 都是流行的原子化 CSS 框架,它们有很多相似之处,但也存在一些明显的区别,以下从多个方面对它们进行比较: 1. 基本概念和原理 Tailwind CSS 是最早提出并推动原子化 CSS…

什么是语料清洗、预训练、指令微调、强化学习、内容安全; 什么是megatron,deepspeed,vllm推理加速框架

什么是语料清洗、预训练、指令微调、强化学习、内容安全 目录 什么是语料清洗、预训练、指令微调、强化学习、内容安全语料清洗预训练指令微调强化学习内容安全什么是megatron,deepspeed,vllm推理加速框架语料清洗 语料清洗是对原始文本数据进行处理的过程,旨在去除数据中的…

C++(23):lambda可以省略()

C越来越多的使用了lambda&#xff0c;C23也进一步的放宽了对lambda的限制&#xff0c;这一次&#xff0c;如果lambda没有参数列表&#xff0c;那么可以直接省略掉()&#xff1a; #include <iostream> using namespace std;void func() {auto f []{cout<<"in…

自制操作系统分享第四天

今天要做什么&#xff1f; &#xff08;1&#xff09;分享 我们上面已经说过INT 0x13这种指令&#xff08;调用BIOS的INT指令&#xff09;&#xff0c;我们知道这是调用BIOS的0x13函数&#xff0c;但还不明白它到底是干什么用的&#xff1a; AH 0x02;# 读盘 AH 0x03;# 写…

DeepSeek预测25考研分数线

25考研分数马上要出了。 目前&#xff0c;多所大学已经陆续给出了分数查分时间&#xff0c;综合往年情况来看&#xff0c;每年的查分时间一般集中在2月底。 等待出成绩的日子&#xff0c;学子们的心情是万分焦急&#xff0c;小编用最近爆火的“活人感”十足的DeepSeek帮大家预…

Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位

需求如下&#xff1a; 项目 测试demo 有多个渠道&#xff0c;部分渠道包含支付功能&#xff0c;在主测试代码外&#xff0c;需要一个单独 Activity 调用测试代码。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因为支付功能需要引入对应的 moudule&#xff0c;因此…

FRRouting配置与OSPF介绍,配置,命令,bfd算法:

文章目录 1、frrouting的配置&#xff1a;2、ospf2.1、检测和维护邻居关系2.2、ospfDR和BDR2.3、odpf邻居表2.4、ospf常用命令2.5、bfd配置 1、frrouting的配置&#xff1a; sudo service zebra start sudo service ospfd start telnet localhost 2604 en configure termina…

Perplexity 开源DeepSeek-R1 模型新版本 R1-1776

引言 在人工智能领域&#xff0c;模型的更新迭代如同科技界的时尚潮流&#xff0c;不断推陈出新。今天&#xff0c;我们要介绍的是Perplexity AI开源的新版推理模型——DeepSeek-R1 1776。这个版本不仅继承了前代的强大性能&#xff0c;还在公正性和准确性上进行了显著提升。那…

关系中出现这10个信号,离分手就不远了(爱情友情都适用)

亲密关系的隐形裂痕 在一个阳光明媚却略显萧瑟的午后&#xff0c;咖啡杯里的咖啡已经凉透。小李盯着手机屏幕&#xff0c;那些曾经热烈的对话记录现在看起来如此陌生&#xff0c;仿佛隔着一层薄薄的雾。她终于意识到&#xff0c;这段关系已经悄然走向尽头。 亲密关系是一场精心…

马斯克Grok3使用入口和订阅教程(白嫖150刀API额度)

文章目录 马斯克Grok3使用入口和订阅教程(白嫖150刀API额度)前言介绍如何订阅X上Premium服务国内订阅X的Premium教程 白嫖教程小结 马斯克Grok3使用入口和订阅教程(白嫖150刀API额度) 前言介绍 重点&#xff1a;Grok 3仅对X上的Premium用户开放。你需要订阅X的Premium服务才能…

相机开发调中广角和焦距有什么不一样

在相机中,调整广角和调整焦距是两个不同的概念,它们的作用和实现方式也不同。以下是两者的详细对比和解释: 1. 调整广角 定义 广角是指相机的视野范围(Field of View, FOV)。调整广角实际上是调整相机的视野范围。更广的视野意味着可以捕捉到更多的场景内容(更宽的画面)…

让大模型帮我设计crnn网络及可运行demo,gpt4o豆包qwendeepseek-r1

prompt 使用 crnn 提取图像特征&#xff0c;给出图像好坏的二分类结果&#xff0c;写清楚代码备注&#xff0c;注释清楚向量维度大小&#xff0c;并给出一个可运行的 demo1、GPT-4o 以下是一个使用 CRNN&#xff08;Convolutional Recurrent Neural Network&#xff09;提取图…

DeepBI助力跨境电商打破流量垄断:AI驱动的亚马逊广告投放新打法

#亚马逊广告优化# 亲爱的亚马逊跨境电商卖家们&#xff0c;是否曾因亚马逊的广告打法不清晰&#xff0c;或是纠结于亚马逊广告费用过高&#xff0c;或是为亚马逊电商广告怎么投放合适的问题而苦恼&#xff1f;在竞争激烈的亚马逊市场中&#xff0c;广告投放效果平平&#xff0…

前端基础入门:HTML、CSS 和 JavaScript

在现代网页开发中,前端技术扮演着至关重要的角色。无论是个人网站、企业官网,还是复杂的 Web 应用程序,前端开发的基础技术 HTML、CSS 和 JavaScript 都是每个开发者必须掌握的核心技能。本文将详细介绍这三者的基本概念及其应用 一、HTML——网页的骨架 HTML(HyperText …

单元测试junit5

一、idea 安装自动化生成插件jcode5 安装可能不成功&#xff0c;尝试多次安装&#xff1b; 安装成功后&#xff0c;重启idea&#xff0c;再次确认安装是否成功&#xff1b; 二、在需要生成单元测试代码的模块的pom中引入依赖 ......<parent><groupId>org.springf…

windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI

本文将手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大语言模型&#xff0c;实现私有化AI服务搭建。 一、环境准备 1.1 硬件要求 CPU&#xff1a;推荐Intel i7及以上&#xff08;需支持AVX2指令集&#xff09; 内存&#xff1a;最低16GB&#xff0c;推荐…

Windows Server 任务计划

背景&#xff1a;QMT服务只能在windows服务器上面运行 直接在控制面板里面搜索"任务计划"点进去 需要注意的是&#xff1a; 1.创建任务计划选择”不管用户是否登录都运行“&#xff0c;是否需要最高权限执行看你的需求 2.操作程序或脚本&#xff0c;选择bat脚本就…

makefile+LSF

LSF LSF&#xff08;Load Sharing Facility&#xff09;是一种常用的集群作业调度系统&#xff0c;bsub 命令用于提交作业到 LSF 集群&#xff0c;而若要关闭&#xff08;终止&#xff09;一个正在运行的作业&#xff0c;需要使用 bkill 命令&#xff0c;下面为你详细介绍相关…

spring boot知识点3

1.spring boot能否使用xml配置 可以&#xff0c;但是很繁琐&#xff0c;现在都建议走JavaConfig 2.spring boot的核心配置文件 application.properties application.yml 3.bootstrap.properties和application.properties的区别 b&#xff1a;用于远程配置 a&#xff1a;…