Linux -- HTTP 请求 与 响应 报文

devtools/2025/1/23 5:07:53/

目录

请求报文: 

请求方法

响应报文:

状态码 与 状态码描述 

共性

常见的报头


请求报文: 

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/devtools/152788.html

相关文章

庄小焱——2024年博文总结与展望

摘要 大家好,我是庄小焱。岁末回首,2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰,照亮了我前行的道路,也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…

吴恩达深度学习——神经网络介绍

文章内容来自BV11H4y1F7uH,仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集,横轴为房子大小,纵轴为房子…

Linux(Centos 7.6)命令详解:iconv

1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME,原始文本编码-t, --t…

Linux Bash 中使用重定向运算符的 5 种方法

注:机翻,未校。 Five ways to use redirect operators in Bash Posted: January 22, 2021 | by Damon Garn Redirect operators are a basic but essential part of working at the Bash command line. See how to safely redirect input and output t…

UG NX二次开发(C#)-创建三维直线段并倒圆

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、创建三维直线段3、创建倒圆曲线4、结果1、前言 在UG NX二次开发过程中,边倒圆的使用比较多,但是直线段倒圆用的比较少,而且控件直线的倒圆的功能稍微复杂些,但是其在创建管道的时候…

线程池 | java中的多线程

在 《Java异步编程 | CompletableFuture--实现复杂的异步控制流 》中,我们提到了 通过 自定义线程池 , 用于管理 异步任务的执行,避免频繁创建和销毁线程,提高性能。 本文将整理并介绍一些 Java 中常见的 多线程创建方式&#xf…

opencv projectPoints函数 computeCorrespondEpilines函数 undistortPoints函数

opencv projectPoints函数 cv::projectPoints 是 OpenCV 中用于将三维点投影到二维图像平面的函数。它通常用于计算在相机坐标系下的三维点在图像坐标系中的位置,考虑了相机的内参和外参。 函数原型 void cv::projectPoints(InputArray objectPoints,InputArray …

20250120面试鸭特训营第28天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 250120 1. 说说 Java 中 HashMap 的原理? HashMap 的底层结构 HashMap 底层由 node 数组、单链表、红黑树构成。根据哈希函数计算得到哈希值,哈希值确定了元素保存在 node 数组中的具体下标。HashMap…