Linux -- HTTP 请求 与 响应 报文

server/2025/1/21 13:55:58/

目录

请求报文: 

请求方法

响应报文:

状态码 与 状态码描述 

共性

常见的报头


请求报文: 

https://i-blog.csdnimg.cn/direct/93e797458e79475281ece94d91e00bc9.png" width="611" />

请求方法

方法说明
GET获取资源
POST传输实体主体
PUT传输文件
HEAD获得报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议连接代理
LINK建立和资源之间的联系
UNLINK断开连接关系

响应报文:

https://i-blog.csdnimg.cn/direct/151452a947f540878c15989822ec25a6.png" width="616" />

如果服务器返回了一个 html 页面, 那么 html 页面内容 就是在 响应正文 中.

状态码 与 状态码描述 

分类状态码含义解释
信息性响应 (1xx):请求已被接收,继续处理。

100 

Continue初步请求已被接受,客户应当继续发送请求的剩余部分。
101 Switching Protocols服务器已经理解了客户端的请求,并将通过升级协议的方式继续处理。
成功响应 (2xx):动作已成功完成。

200 

OK请求成功,所请求的响应头或数据体将随此响应返回。
201 Created请求成功并且服务器创建了新的资源。
204 No Content请求成功但服务器没有需要返回的内容。
重定向响应 (3xx):需要进一步操作以完成请求。

301 

Moved Permanently请求的网页已永久移动到新位置。
302 Found请求的网页临时从不同的URL响应。
304 Not Modified自从上次请求后,请求的网页未被修改过。
客户端错误 (4xx):请求包含语法错误或者无法完成。

400 

Bad Request服务器无法处理由于客户端请求语法错误而导致的请求。
401 Unauthorized请求要求用户的身份认证。
403 Forbidden即使提供身份验证凭据,服务器也拒绝处理请求。
404 Not Found服务器找不到请求的网页。
服务器错误 (5xx):服务器未能完成明显有效的请求。500 Internal Server Error服务器遇到了一个未曾预料的情况,导致了它无法完成对请求的处理。
501 Not Implemented服务器不支持当前请求所需要的某个功能。
502 Bad Gateway服务器作为网关或代理,从上游服务器收到无效响应。
503 Service Unavailable服务器暂时无法处理请求,可能因为过载或维护。

共性

怎么分离报头和有效载荷?

空行可以保证在读取报头时,把报头读完。

怎么判断已经把正文读完?

在报头中,会记录正文的长度 Content-Length,在读取正文时,根据正文长度来判断是否已经把正文读完了。如果报文中没有正文,则不会出现该字段。

为什么需要 HTTP 版本?

一个应用会存在新老版本并存的情况,在更新新版本时,不仅客户端需要更新,服务器也需要更新,如果服务器都更新成新版本,但有的客户端还停留在旧版本,那么服务器给客户端提供服务时,也就是服务器和客户端在进行网络通信时,通信可能会出现问题,比如旧版本的客户端不支持新功能。为了确保客户端和服务器之间能够正确地通信,需要在HTTP报文中携带版本号,有了 HTTP 版本后,新版本的客户端就和新版本的服务器匹配,老版本的客户端就和老版本的服务器匹配。

常见的报头

Content-Type数据类型,常见的值包括 text/htmlapplication/jsonapplication/xml 等。
Content-Length正文的长度
Host客户端告知服务器,所请求的资源在哪个主机的哪个端口上
User-Agent声明用户的操作系统和浏览器版本信息
referer当前页面是从哪个页面跳转来的
Location搭配 3XX 状态码使用,告诉客户端接下来要去哪里访问
Cookie用于在客户端存储少量信息,通常用于实现会话(session)的功能

http://www.ppmy.cn/server/160192.html

相关文章

PyCharm中解决依赖冲突

1. 创建虚拟环境 确保为项目创建了一个虚拟环境,这样可以隔离项目的依赖,避免全局依赖冲突。 检查当前项目的 Python 环境 打开 PyCharm。点击菜单栏的 File > Settings > Project: [Your Project Name] > Python Interpreter。确保已选择一…

Vue2+OpenLayers添加缩放、滑块缩放、拾取坐标、鹰眼、全屏控件(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 废话不多说&#xff0c;直接给完整代码&#xff0c;替换成自己的KEY即可运行&#xff1a; <template><div><div i…

ubuntu 系统 ,docker建的服务 ,其他局网机器可以通过IP:端口的方式访问。不是docker的不行。

根据您的描述&#xff0c;docker 建的服务可以通过 IP&#xff1a;端口的方式被局网其他机器访问&#xff0c;而非 docker 的服务不行&#xff0c;以下是可能的原因及解决方法&#xff1a; 网络配置方面 • 检查非 docker 服务的网络监听配置&#xff1a;确保非 docker 服务是…

在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤

之前有用户反馈&#xff0c;在EasyNVR平台中添加Pull时使用海康设备的RTSP流地址无法播放。经过研发的优化及一系列严谨的验证流程&#xff0c;我们已确认优化后的EasyNVR平台&#xff0c;通过Pull方式添加海康设备的RTSP流已经能够正常播放。以下是具体的操作步骤&#xff1a;…

【AcWing】蓝桥杯辅导课-递归与递推

目录 1、递归 1.1 递归实现指数型枚举 1.2 递归实现排列型枚举 1.3 递归实现组合型枚举 1.4 带分数 方法一 方法二 2、递推 2.1 简单斐波那契 2.2 费解的开关 2.3 翻硬币 2.4 飞行员兄弟 方法一 方法二 1、递归 递归就是在函数内部自己调用自己 我们以递归的形式…

安装 Docker GPU 版本的过程及遇到的坑

首先&#xff0c;安装的 Docker 版本并不支持 GPU&#xff0c;因此需要安装支持 GPU 的 Docker 版本。然而&#xff0c;在安装和配置过程中&#xff0c;遇到了一系列问题和挑战。 错误的安装步骤 以下是我在尝试安装 GPU 版本时&#xff0c;执行的错误操作&#xff1a; # 安…

redis 分布式重入锁

文章目录 前言一、分布式重入锁1、单机重入锁2、redis重入锁 二、redisson实现重入锁1、 添加依赖2、 配置 Redisson 客户端3、 使用 Redisson 实现重入锁4、 验证5、运行项目 三、redisson分布式锁分析1、获取锁对象2、 加锁3、订阅4、锁续期5、释放锁6、流程图 前言 通过前篇…

Data Filtering Network 论文阅读和理解

目录 一、TL&#xff1b;DR 二、Introduction 2.1 apple的结论 2.2 业界做法&#xff1a; 2.3 我们的做法&#xff08;Apple&#xff09; 2.4 如何获取好的DFN 三、未完待续&#xff08;这周出去购物了&#xff0c;下周继续补充&#xff09; 一、TL&#xff1b;DR 核心…