图解HTTP-HTTP报文

ops/2024/12/27 3:43:50/
http://www.w3.org/2000/svg" style="display: none;">

参考资料:图解HTTP

HTTP报文

用于HTTP协议交互的信息被称为HTTP报文。请求端的HTTP请求报文,响应端(服务器端)的叫做响应报文。HTTP报文本身是由多行(CR + LF作为换行符)数据行构成的文本。
https://i-blog.csdnimg.cn/direct/2468844053874944bd5682dfad0af887.png" alt="在这里插入图片描述" />

请求报文及响应报文的结构

https://i-blog.csdnimg.cn/direct/ad892b8479374abba1c25e37a64c7223.png" alt="在这里插入图片描述" />
请求行:包含用于请求的方法,请求URI和HTTP版本。
状态行:包含表明响应结果的状态码,原因短语和HTTP版本。
首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般包含四种:通用首部、请求首部、响应首部、实体首部
其他:可能包含HTTP的RFC里未定义的首部(Cookie等)

编码提升传输速率

通过在传输时编码,能有效的处理哦大量的访问请求,但是编码的操作需要计算机来完成,因此会消耗更多CPU资源。由服务端进行编码客户端接收并负责解码。常用的编码:
gzip(GNU zip)
compress(UNIX系统的标准压缩)
delate(zlib)
identity(不进行编码)

报文

是HTTP通信中的基本单位,由8位字节流组成,通过HTTP传输。

实体

由实体首部和实体主体组成。
在传输的过程中需要对数据进行分块并编码进行传输,分块传输编码会将实体主体分成多个部分快,每一块都会用16进制来来标记快的大小,而实体的最后一块会使用‘0 (CR + LF)’来标记。
HTTP/1.1中存在一种称为传输编码的机制,它可以在通信时按某种编码传输,但是定义作用于分块传输编码中。

MIME(Multipurpose Internet Mail Extensions)

多用途因特网机制,允许处理文本、图片、视频等多个不同类型的数据。
HTTP协议中也采纳了多部分对象集合,发送的一份报文主体内可含有多类实体类型。
multipart/form-data
multipart/byterangs
在使用MIME,需要在首部字段里加上 Content-type.

获取部分内容范围请求

比如要实现指定下载的实体范围。执行范围请求时,会用到首部字段Range来制定byte范围。

Range: bytes=5001-10000

针对范围请求,响应会返回状态码为206 Partial Content的响应报文,响应会在首部字段Content-type表明multipart/byterangs后返回报文。

内容协商返回最适合的内容

同一个Web 网站可能存在多份相同的页面。比如中文和英文,当访问同一个URI的Web 页面显示中文或英文Web页面。这样的机制称为内容协商。
内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。

  • 服务器驱动协商
    由服务器端进行内容协商。以请求首部字段作为参考,在服务器端自动处理。
  • 客户端驱动协商
    由客户端进行内容协商的方式。
  • 透明协商
    服务器驱动和客户端驱动的结合体,是由服务器和客户端各自进行协商的一种方法。

http://www.ppmy.cn/ops/145278.html

相关文章

3001. 捕获黑皇后需要的最少移动次数

3001. 捕获黑皇后需要的最少移动次数 题目链接:3001. 捕获黑皇后需要的最少移动次数 代码如下: class Solution { public:int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f){if (a e && (c ! e || !in_between(b, d…

生产力利器,Mac 系统优选,keychron K10Max 三模键盘体验分享

生产力利器,Mac 系统优选,keychron K10Max 三模键盘体验分享 哈喽小伙伴们好,我是Stark-C~ 我在不久前也是跟风入手了Mac mini M4,作为多年的黑苹果用户,我这也算是正式转正了~。 选购理由 不过使用Mac mini的小伙伴…

Element-ui table组件:单元格未溢出,悬浮出现popover提示框

问题视图: 问题定位: 源码中,给开启溢出提示的列单元格都添加了class,并且宽度为实际列宽-1。 若单元格内容宽度100%撑开,则会计算为溢出情况。 处理方法: 单元格内容宽度设置100%-1。

[react]searchParams转普通对象

const [param, setParam] useSearchParams()const params Object.fromEntries(param.entries());console.log(params); 如果是params的话,就是用返回一个对象, const p useParams()console.log(p); 为什么是对象?难道param还能有2个字段? 还真是! 给2个占位符 {path:…

JDBC报错

报错信息 Exception in thread "main" java.sql.SQLException: The server time zone value is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to …

HTML 画布:创意与技术的融合

HTML 画布:创意与技术的融合 HTML 画布(<canvas>)元素是现代网页设计中的一个强大工具,它为开发者提供了一个空白画布,可以在上面通过JavaScript绘制图形、图像和动画。这种技术不仅为网页增添了视觉吸引力,还极大地丰富了用户的交互体验。本文将深入探讨HTML画布…

汽车IVI中控开发入门及进阶(47):CarPlay开发

概述: 车载信息娱乐(IVI)系统已经从仅仅播放音乐的设备发展成为现代车辆的核心部件。除了播放音乐,IVI系统还为驾驶员提供导航、通信、空调、电源配置、油耗性能、剩余行驶里程、节能建议和许多其他功能。 ​ 驾驶座逐渐变成了你家和工作场所之外的额外生活空间。2014年,…

网页中字体图标Fontawesome的使用

关于字体图标&#xff0c;最先学习的是iconfont&#xff0c;后来又使用过icomoon&#xff0c;以前在学习BootStrap的时候&#xff0c;曾经接触过font-awesome&#xff0c;很长时间没用&#xff0c;发现自己很健忘。今天试着在网页中使用font-awesome&#xff0c;最开始居然不显…