前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

作者头像
用户11396661
发布于 2025-02-16 11:41:52
发布于 2025-02-16 11:41:52
920
举报
文章被收录于专栏:C++开发C++开发

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Linux】序列化、守护进程、应用层协议HTTP、Cookie和Session
_小羊_
2025/02/21
1350
【Linux】序列化、守护进程、应用层协议HTTP、Cookie和Session
HTTP协议详解
HTTP协议是位于应用层上的协议,HTTP协议叫做超文本传输协议。他定义了客户端(如浏览器)与服务端之间如何通信。
小灵蛇
2024/09/25
3850
HTTP协议详解
HTTP/HTTPS协议(请求响应模型、状态码)
HTTP(HyperText Transfer Protocol)即超文本传输协议,是互联网上应用最为广泛的协议之一。它是一种无状态的、面向事务的协议,用于客户端(如浏览器)和服务器之间的通信。无状态意味着每次请求 - 响应对都是独立的,服务器不会保存之前请求的状态信息。
久绊A
2025/05/05
2210
【Linux网络编程】应用层:HTTP协议 | URL | 简单实现一个HTTP服务器 | 永久重定向与临时重定向
应用层有很多协议,其中HTTP协议就是其中一个,HTTP协议(超文本传输协议)也是较为重要的一个协议。
南桥
2024/12/12
2430
【Linux网络编程】应用层:HTTP协议 | URL | 简单实现一个HTTP服务器 | 永久重定向与临时重定向
【计网】【计网】从零开始学习http协议 ---理解http重定向和请求方法
http协议作为通信协议,必然要支持序列化与反序列化。我们需要做的是服务器的操作,只需要进行请求的反序列化和应答的序列化就可以了,请求的序列化和应答的反序列化是浏览器(客户端)需要考虑的。要做到序列化和反序列化需要按照请求和应答的结构,从字符串中读取分离出来,具体操作可以参考之前的文章:
叫我龙翔
2024/10/10
1940
【计网】【计网】从零开始学习http协议 ---理解http重定向和请求方法
网络编程之HTTP协议的请求方法
HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件、图像、结果等,即是一个客户端和服务器端请求和应答的标准。
lyb-geek
2018/07/26
1.4K0
网络编程之HTTP协议的请求方法
HTTP协议概述
HTTP1.0定义了三种请求方法:GET、POST、HEAD方法。 HTTP1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT方法。
WindRunnerMax
2020/08/27
7260
Linux网络-HTTP协议
Linux网络:HTTP协议 零、前言 HTTP协议 1、认识URL 2、urlencode和urldecode 3、HTTP协议格式 1)HTTP请求 2)HTTP响应 4、HTTP的方法 5、HTTP的状态码 6、HTTP常见的Header 7、Cookie和Session 零、前言 在此之前我们对网络套接字编程有了一定的基础和了解,接下来我们将自顶向下学习Linux网络分层协议栈,透过对协议栈的深入学习从而加深我们对网络的理解 HTTP协议 概念及介绍: HTTP(Hyper Text Tra
用户9645905
2022/11/15
1.6K0
Linux网络-HTTP协议
学习提升之HTTP状态码详解
2016-11-1410:23:53 发表评论 315℃热度 1.URL 2.URL中常见的协议 3.TCP/IP协议簇 4.TCP/IP参考模型 5.HTTP协议简介 6.HTTP协议的特点(为什么选择HTTP) 1 何谓HTTP状态码 2 状态码分类 3 常见的状态码 目录 最近太忙了,不好意思,没有更新博客,所以今天抽空把这些天积累的知识都写下来与大家分享。这篇文章是我在学习网络部分的一些学习笔记,在这里分享给大家。之前看到状态码都是搜索下就完事,常用的也都记得,毕竟搭建博客等过程
timhbw
2018/05/03
1.4K0
常用 HTTP 状态码
HTTP 100 Continue 信息型状态响应码表示目前为止一切正常,客户端应该继续请求,如果已完成请求则忽略。
雨落秋垣
2024/10/29
2790
HTTP:伟大而又无闻的协议
  Hello,大家好啊,我是Connor,一个从无到有的技术小白。有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协议,只是知道HTTP协议是用来网页传输的,但是再深究一点就不明白了,所以今天我们来讲一讲什么是HTTP协议。
润森
2019/10/15
5290
HTTP:伟大而又无闻的协议
常见”HTTP状态码”大全
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
空木白博客
2020/09/19
1.4K0
【网络】应用层协议HTTP&&HTTPcookie与session&&HTTPS协议原理
虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一
用户10925563
2024/12/02
2230
【网络】应用层协议HTTP&&HTTPcookie与session&&HTTPS协议原理
分享一些整理的HTTP状态码及其详解
100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
海拥
2021/08/23
8500
http状态码
chimchim
2023/10/17
3080
【计算机网络】详解HTTP请求和响应格式&常见请求方法&Header报头&响应报文状态码&URL
  在互联网世界中,HTTP (HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。客户端通过 HTTP 协议向服务器发送请求,服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。
用户10923276
2024/10/01
1.9K0
【计算机网络】详解HTTP请求和响应格式&常见请求方法&Header报头&响应报文状态码&URL
HTTP协议基础浅谈
HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。是从万维网服务器传输超文本到本地浏览器的传送协议。
吾非同
2020/10/23
5840
【计网】HTTP协议详解
  虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用。HTTP(超文本传输协议) 就是其中之一。
用户11029129
2024/12/13
3090
【计网】HTTP协议详解
HTTP1.1协议状态码
此类状态码仅由 状态行 和可选响应头组成的临时响应, 并以空行终止。此类状态码没有必需的标题。由于HTTP / 1.0没有定义任何1xx状态代码,因此服务器必须禁止向HTTP / 1.0客户端发送1xx响应。
星尘的一个朋友
2020/11/25
2.8K0
Http协议状态码总结
一、http方法 方法名 说明 get 发送一个获取请求,服务器的响应会包含head与body部分 post 发送一个输入数据的请求,服务器的响应会包含head与body部分 head 服务器响应的只有head部分 put 向服务器发送一个文件(资源) trace 目的服务器在响应请求的时候,会在主体中带上原始的请求报文,用于客户端对比防火墙、代理、网关等对数据做的改变 options 请求服务器告知web服务器支持的功能 delete 请求服务器删除url指定的资源
sam dragon
2018/01/17
1.1K0
相关推荐
【Linux】序列化、守护进程、应用层协议HTTP、Cookie和Session
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档