http 三点零发布了,宣布彻底弃用 tcp 协议了,为什么呢?主要有两个方面原因。首先,在 http 一点一里面, tcp 按序接受一个个数据包,一旦某个数据包阻塞,那么后面的数据包就全部阻塞了,这就是我们常说的对头阻塞问题。 在二零一五年的时候, htp 协议迎来了重大的更新,发布了 htp 二里面的一个大的特点就是多录复用,允许单个 tcp 连接发送多个请求,这样呢,可以减少连接数。但是呢, tcp 对头主色问题造成的影响就会更大了, 比如说某个 agtp 请求造成了 tcp 对头主色,那么就会有多个请求都受到影响。另外一个大的原因呢,就是我们发起 agtp 请求的时候,需要经过 tcp 三次握手和四次挥手的过程, 如果客户端和服务端相距比较远,那么每次 rtt 可能会超过一百毫秒,从而导致整个过程有明显的延迟。 这两个问题啊,一直困扰着 htp 协议,所以呢,解决问题的办法往往就是解决提出问题的人,是吧?所以, htp 三点零就宣布彻底放弃使用 tcp 了,而采用了更加高效的 quic 协议。 qic 协议是什么?他结合了 tcp 数十年的部署和实践经验,能够基于 udp 实现几乎所有的 tcp 特性。他的传输是绝对可靠的,可以通过流量控制和用色控制机制来防止过载,并且呢,是以比 tcp 更智能更高效的方式实现了这些功能。 所以啊,朋友们,面试题要重新背了, agttp 不再使用 tcp 了。记得点赞关注哦!
粉丝2417获赞2.0万

autumn 爬虫教程第二集 http 请求和响应我们上个视频已经了解了获取网页内容的基本流程,向网站服务器发起 http 请求,然后服务器响应我们的请求。那么我们发起这个 http 请求到底是什么样子的呢? 服务器响应给我们的又是什么东西?我们可以先在浏览器里直观感受一下,打开浏览器的开发者模式,右键点击页面选择检查, 然后点击到网络这个选项卡下面如果是英文的界面,那么你需要点击的是 network 这个选项卡。重新加载一下数据包,你会看到下面出现了非常多的请求记录。 找到这个主要的三 w 点百度点 com 的 请求,你就能看到完整的 http 请求信息了,这里面包含了请求的网址、请求方式、响应标头和请求标头等内容。浏览器已经帮我们自动过滤好了这些内容。如果你想看原始的报文格式,也可以直接点击原始选项查看, 这些就是我们之后写爬虫代码时要操作的基础内容。在浏览器里感受过之后,我们再来系统的看一下 http 请求到底包含什么。 我们发起的 http 请求主要由三部分组成,请求行、请求头、请求体。在请求行里面会发送三个信息,第一个是请求方式,最常见的有两种, get 请求和 post 请求。 get 请求通常用来获取网页内容,当我们想要看小说、看视频的时候, 就用 get 请求直接观看网站给我们看的内容,使用 post 请求就可以提交数据。例如在我们登录网站的时候,需要将我们的用户名和密码传送给服务器,由服务器验证是否正确,才能够登录。第二个信息。请求行内的路径,也就是我们想访问的具体页面在网站中的位置。 比如你在百度搜索雷军,进入他的百科页面后,看到网址栏中百度百科的网址是三 w 点百科点百度点 com, 那 么后面的后缀就是雷军的百科在这个网站中的路径。 第三个是 http 协议版本,比如 http 一 点一。 http 协议有多个版本,零点九和一点零基本已经被淘汰,大多数网站目前仍在使用一点一版本。 虽然二点零和三点零已经推出,但升级需要成本和技术改造,目前还没有被广泛采用。 在 http 请求的请求头内,会发给服务器客服端的信息,主要是搞清楚向哪个网站发起请求,又谁发起的请求。在这里 host 的 后面的就是要告诉服务器用户想要访问哪个网站。 user agent 就是 标明客户端的身份信息,告诉服务器发起请求的是谁。爬虫也可以通过这个伪装成浏览器向服务器发起请求。 accept 里面的内容就是告诉服务器客户端能理解的内容类型,以及优先接受什么格式的响应内容。 如果是浏览器,一般请求的是 html 原始文件。请求体也叫做载荷,通常只在 post 请求中出现。 get 请求一般没有请求体,因为 post 请求目的主要是给服务器传递数据,例如在你登录时填写的用户名和密码等等,就放在这个里面。搞清楚请求之后,我们再来看 http 响应是什么,它同样包含响应行、响应头、响应体三部分, 响应行内的内容有这些,大家看到这个 http 一 点一是不是很熟悉呢?没错,它也是协议的版本, 在协议版本后面的两百表示的是状态码,这是一个非常重要的信息,这个三位数的代码会告诉你请求成功了没有,如果显示的是两百,就表示你的请求成功了。 如果显示的是三零一,就表示网站的内容被永久从定向了,也就是网站转移到了新的地址。如果显示的四零四,就表示我们访问的网页并不存在,或者没有找到。如果返回的是五百,就表示服务器内部出现了错误。第三个内容表示的是状态文本, 是对状态码的简短文本描述,比如说 ok 或者 not found。 响应头内包含需要告知客服端的信息,比如返回内容的类型、编码格式、内容长度以及服务器的类型和版本号等。响应体里装的就是我们真正想要的东西, 服务器返回的实际数据。如果请求的是一个网页,这里就是 html 代码。通过这个视频,相信你对 http 请求是怎么发起的,请求里包含什么,服务器又返回了什么已经有了比较全面的了解。 虽然我们还没开始写代码,但是已经为编写爬虫砥定了坚实的基础。好的,下个视频我们就正式进入实战,看看爬虫代码到底该怎么写,我们下个视频再见!

全球最大的开源代码平台 gigub 正面临一场前所未有的危机, ai 生成的低质量代码正在淹没开源社区,让维护者们苦不堪言。 最新消息显示, github 正在考虑采取极端措施,包括完全禁用拉取请求功能。数据显示, ai 生成的代码提交中,百分之九十都不符合标准。微软工程师直言,审查者现在根本无法确定提交者是否真的理解自己提交的代码。更可怕的是, 一些 ai 生成的代码看似结构完整,实际上却存在严重的安全隐患。这场危机已经让多个知名项目被迫采取行动,窟窿项目直接关闭了漏洞赏金计划偷了主啊,甚至开始自动拒绝所有外部提交。 g o c d 的 维护者警告说,我们正在变成 ai 的 免费提示员, 这正在摧毁整个开元社区的信任基础。影响远不止代码质量。 stack overflow 的 越活跃,提问量暴跌百分之七十五, 跌至二零零八年以来的最低水平。在最近的开发者大会上,专家们呼吁建立新的贡献机制,通过有益的摩擦力来确保代码质量。 这场危机关系到整个开元生态的存亡。正如专家所说,如果我们不能找到解决方案,开元社区最宝贵的知识共享精神将面临毁灭性打击。 github 的 下一步决定或将改变整个软件开发行业的未来。

我们通过 url 可以 找到具体的服务,找到之后双方怎么沟通,这就需要用到 http 协议。协议说白了就是通信规则,更具体点说就是数据的传输格式,大家都用同一种格式收发数据, 彼此才能看得懂。这就像你去银行办业务,要填单子,必须按单子的格式来填,银行柜员才能顺利处理。咱们学 http 协议,核心就是学填这张单子,它到底是什么格式,每一行该写些什么内容。除了格式, http 还有两个关键特性。第一个点, http 协议是无状态的, 所以咱们叫他无状态协议,就是每一次请求和响应都是完全独立的一锤子买卖。客户端发一个请求过去,服务器返回响应,这个响应一完成,链接就直接断开了,服务器当场就把你忘了,下次你再发请求,他根本不知道你是谁,也不记得你之前来过。 正是因为服务器不保存之前的交互状态,一次请求响应结束就断裂,所以他也被称为断开式连接。第二个特性是 h g d p。 每次请求响应传递的内容都是存文本或者说支付串, 但这个文本必须严格遵守咱们前面说的格式规范。那接下来咱们就具体看看 html 协议这张单子到底该怎么写。 先看请求消息的格式,它分为三部分,请求行、请求头、请求体。这里要注意一个细节,请求头和请求体中间必须有一个空行,这个空行是格式,要求不能少。请求行就是整个请求的第一行,它由三部分组成,请求方法、请求路径。最后是协议版本, 这里咱们重点关注请求方法,它代表了客户端想做什么,是要从服务器拿数据,还是要往服务器提交数据?对爬虫来说,常用的请求方法基本就两个, get 和 post。 get 主要用来获取数据, post 主要用来提交数据。比如登录注册的时候, 你的账号密码通常就会通过 post 请求放到请求体里传给服务器。再来看请求头,它其实就是一组一组的键值队,用来补充说明这次请求的额外信息,比如你用的什么设备,访问请求来自哪里等等。 浏览器每次发请求都会自动带上一大堆请求头,但很多头信息服务器根本用不到。你可能会想,能不能别发这些没用的,但浏览器的逻辑是,不好意思,我默认就全发给你, 光说不直观。咱们来用浏览器看一下怎么找到这些请求头。首先在网页上点击鼠标右键,选择检查,或者直接按快捷键 f 十二、打开浏览器的开发者工具。有些同学打开后可能会弹出一个额外的小界面,没关系,按 esc 键就能关掉或打开它。 另外,开发者工具的位置也可以调整,点右上角的三个点就能切换显示位置。如果你觉得英文界面不适应,可以点这个设置,把 language 改成中文, 然后关掉这个界面,重新打开就好了。现在咱们重点看网络面板,注意左上角的录制按钮一定要打开,它会实时捕捉所有网络请求。旁边有个停用缓存选项,一般都要勾上,避免浏览器缓存数据干扰。我们观察 保留日期,先不要勾,这里是过滤用的,要选择全部。设置好之后刷新一下当前页面,刷新后这里会列出一大堆请求,每一条都有请求路径、请求方法这些信息。如果你的列表里少了某些字段,在表头位置右键勾选对应的字段就可以显示了。 这里还能看到请求用的协议, a g t t p 一 点一。接下来我们选中类型为多功能的请求,通常是列表里的第一个,点击它的名称进入详情,在这里可以看到请求的 url 和地址栏里头是一样的。 还有请求方法响应头先不看下面这些就是请求头了,浏览器会把请求头做美化展示,咱们勾选原始选项,就能看到真实的 a g t t p。 请求格式。第一行是请求行,下面都是请求头。 咱们先来看 user agent, 这个投信息是告诉服务器你用的什么设备,但仔细看你会发现这里面全是假的。他说我是 mozilla, 其实我用的是 chrome, 还说我是英特尔的 mac 系统,但其实我是 m 芯片的 mac, 然后他还是 webkit、 chrome、 safari。 所有浏览器都是这么干的。主要是历史原因, 早期浏览器差异特别大,服务器要兼容所有浏览器特别麻烦,所以有些后端开发者干脆躺平了,只兼容某一种浏览器, 比如 i e。 如果你的 urgent 不是 i e, 就 弹窗提示你不支持你的浏览器,请下载 i e 以前就是这么玩的, 后来浏览器厂商就想了个办法,干脆在 urgent 里把所有主流浏览器的标识都写上,骗服务器我兼容你别拦着我,服务器是无法识别真假的,你说你是什么浏览器,你就是什么浏览器, 这个 urgent 后面咱们也能改,将反爬的时候再细说。再看 reaper, 他 表示这次请求是从哪里跳转过来的,比如咱们现在这个请求, ref 就 会显示上一个访问的站点地址,至于其他请求头暂时不用关心,等后面讲到反爬的时候咱们再具体说。最后是请求体,这部分是客户端要传递给服务器的业务数据。 get 请求通常没有请求体,只有 post 和 post 请求会带,做爬虫的话, post 请求很少遇到,绝大部分场景都是 get 和 post。

大家好,我是小安师兄,今天带大家五分钟搞懂 web 工作的原理。我们每天都在浏览器里打开无数网页,输入网址,点击链接,页面瞬间呈现。但在这一秒之内,你的请求经历了怎样的旅程呢? 其实它包含 dns 解析、 tcp 连接、 http 请求与响应、浏览器渲染等等。今天 我们就来完整拆解一次 web 请求的幕后全程。理解它是理解我爱安全的第一步。这一切始于你在地址栏输入的那个网址 url, 也就是统一资源定位符。它的格式通常是协议域名 路径,例如 http 冒号斜杠斜杠三 w 点 x a m p l e 点 com 斜杠 i i d x d h t m l。 但计算机不认识域名,只认识 ip 地址。所以浏览器的第一项工作是去问 d n s。 服务器,你可以把它想象成互联网的电话本或查号台 d n s。 将你输入的域名 解析为对应的服务器 ip 地址。没有这一步,你的请求将无处可去。拿到 ip 地址后,浏览器就要与目标服务器建立连接。 wifi 通信,即与 tcp 协议, 这是一种可靠的面向连接的协议。在发送任何 http 数据之前,客户端和服务器需要通过三次握手来协商建立一个连接。这个过程就像打电话时先确认 能听到吗?当对方回答能听到时,你说好的,那我们开始说正事。连接建立后,真正的数据传输才能开始连接。建立后,浏览器会向服务器发送一个 http 请求报文,这个报文由三部分组成, 第一行是请求行,包含请求方法,如 get 或 post 请求的资源路径以及 http 协议版本。然后是请求头,包含一系列剑之队, 告诉服务器你的浏览器类型,能接受什么格式的数据以及 cookie 等信息。接着是一个空行,用于分格、头部和主体。最后是请求体,通常在 pos 方法中携带表单提交的数据。这里需要特别理解 get 和 pos 的 区别。 get 请求的数据附加在 url 之后,有长度限制,且可能暴露在浏览器历史记录中。 pos 请求的数据放在请求体里相对更安全,且没有长度限制。对于登录等敏感操作,永远应该使用 post。 服务器收到请求后会解析它,调用相应的程序处理,然后返回一个 h t t p 响应报文。它的结构与请求报文类似,但第一行是状态行,包含 h t t p 版本和状态码。状态码是我们立即响应结果的关键,而 x x 表示成功, 比如两 l k 三 x x 表示重定向,比如三百零二。跳转四, x x 表示客户端错误,比如四零四找不到页面,四百零三禁止访问。五 x x 表示服务器错误,比如五百内部错误。 响应头里包含了服务器信息、内容类型等。响应体里则装着真正的数据,可能是 html 代码、图片文件或 send 数据。浏览器收到响应体中 的 html 代码后开始解析和渲染,但在解析过程中,他会发现 html 中引用的 css 样式、 java script、 脚本、图片等静态资源。每遇到一个这样的资源,浏览器就会发起一个新的 http 请求去获取它。这也是为什么打开一个网页往往伴随着几十甚至上百个请求。 所有资源下载完毕后,浏览器将它们整合渲染,最终呈现在你面前。值得注意的是, http 协议本身是无状态的,意味着服务器不记以前的请求。但为了提升效率, 从 http 一 点一开始默认开启的 keep live 允许在同一个 tcp 连接上发送多个请求,避免了频繁建立和断开连接的开销。总结一下,一次完整的 web 请求之旅包括 dns 解析、 tcp 连接建立、 h t t p。 请求发送,服务器处理并返回响应浏览器渲染页面。在这个过程中,每一个环节都可能成为攻击的切入点, d n s。 劫持 t c p 绘画劫持 h t t p。 铭文窃听以及各类针对歪应用的注入攻 击。理解正常的工作原理是识别异常与防御的基础。本期视频就到这里,我们下期见。

h t t p 和 h t t p s 有 什么区别?这是面试非常高频的一道题。那 h t t p s。 它其实是 h t p 的 安全增强版本,在 h t p 的 基础上增加了 s s l 和 t s l 加密层。二日的差异呢,主要集中在三个核心点。一、安全传输 h t p, 它是明文的,传输数据在网络中是裸露的,用抓包工具可以 直观的看到请求的内容,比如公共 wifi 下如果传登录密码,很容易被拦截。 h p p s。 它通过对称和非对称加密实现密文传输,能防止数据被窃取篡改,这是最核心的区别。二、端口与证书 a t p。 它默认是用八零端口,没有任何证书要求,配置也比较简单。 a t p s。 它默认是使用四十三端口,必须是有 c a 权威机构颁发的 s s l 的 证书,如果没有有效证书的话,浏览器会 直接弹出风险提示。三、性能与配置 a t p。 它没有加解密的开销,它传输的速度会更快,服务器配置也更简单。 a t p s。 它因为多了证书验证数据,加密解密这样一些步骤,会有轻微的性能损耗。服务器呢,也会需要额外的一些配置整个加密的套件。那实际在应用中呢?纯静态的一些展示网页可以使用 a t p, 但涉及一些登录啊,支付啊,敏感数据这些场景,那必须是使用 a t p s。 这也是现在主流的网站的一个标配。那在测试工作中呢,我们可以使用叉子去抓 a p p 呢?我们能直接看到请求的请求参数和 read box, 它都是明文的,而 a p p s。 如果不配置证书的话,你是没办法看到内容的,整个 a p p s 的 内容它就是乱码。 同时呢,我们还可以去测试 a p p s 的 证书有效期,比如说证书过期伪造,系统会给出一些正确的或者异常的一些提示。啊,这样呢,我们不仅解答了两者的区别,也结合实际的测试工作进行了说明和验证,瞬间呢,就拉开了跟别人那个差距。如果你还想学习更多的内容,欢迎进一步交流。

一分钟讲清楚接口测试神器 postman, 从入门到精通,其实不用死记硬背,跟着这四个阶段走,你也能把 postman 用得炉火纯青。第一阶段,先把基础打牢。首先你得知道 postman 是 干啥的, 它就是专门做 http 请求的接口测试工具,调试、自动化测试都能搞定。然后就是安装特别简单,去 postman 官网下载,根据自己的 windows、 macos 或者 linux 系统点对应按钮下载安装就行。安装好后完成首次登录注册,再把主页界面和发送请求界面摸熟, 这是后面所有操作的基础。第二阶段,掌握基本应用。先搞懂接口的基本概念,然后重点学两种核心请求,一个是 get 请求,就拿显示菜单列表的接口举例,跟着步骤操作就能学会。另一个是 pose 请求,像登录接口就是典型的例子, 把这个操作练会,基础的接口调试你就已经掌握了。第三阶段,吃透常用场景,这都是咱们工作中天天要用到的, 比如环境变量,先理解概念,再跟着步骤添加,还有断言要会验证状态码、响应论文里的内容特定自断,甚至是响应时间是否达标。另外,接口关联、新研这些功能 也都是日常测试离不开的,必须熟练掌握。第四阶段,进阶高级应用,重点就是生成测试报告,按步骤来一点都不难,先准备好集合和环境,接着安装 newman, 再安装对应的报告插件, 最后运行 newman 就 能生成测试报告了。这份 pos 满入门到精通的文档,把从基础到高级的核心知识点都包含了,不管你是刚入门的测试新手还是想提升技能的?老测试跟着学接口测试效率绝对能翻倍。

get 方法在 http 协议中的设计书中适用于获取或检索信息,且不应该对服务器上的资源产生修改或副作用。技术上讲,你可以在服务器端编程, 使得 get 请求触发状态更改,但这种做法是不符合 http 规范和最佳实践的。这是因为使用 get 方法来修改资源可能导致意料之外的结果。例如,一、缓存问题由于 get 请求被认为是密等的和安全的, 他们可能会被缓存服务器或代理服务器缓存。这意味着重复的或错误的请求可能不会直接到达服务器,从而导致资源状态未能按预期更新。二、爬虫和搜索引擎网络爬虫和搜索引擎可能会访问和索引带有 cat 请求的 url, 从而导致资源状态被意外更改。三、安全性使用 get 方法修改资源可能会导致安全风险。例如,敏感信息可能会出现在 url 浏览器历史记录或服务器日志中。 为了遵循 http 协议的最佳实践,建议使用其他 http 方法来修改服务器上的资源,如 post put, the patch 或 delete。 这些方法的设计初衷就是用于创建、 更新或删除资源,从而使得维尔并用程序更加安全、可靠和易于维护。

快速掌握接口自动化测试这一章节,我们来讲讲系统中不同的接口它使用的不同方式以及它的用途和区别。 常见的接口请求我们主要使用的是 hdp 协议,那么 hdp 里面就会有不同的请求方法,我们需要对它进行一个初步的了解,才能够在我们后续做接口自动化测试的时候,快速地去分析每一种接口我们不同的一些调用的实际使用方式。 首先对于我们系统里边常见的方式来说的话,主要是以 getpos 最为常见, 但整个 http 常见的一些方法呢,它主要有这么七大种类。 get 方法主要是用来获取数据,比如说获取用户信息、获取图片、 gs, css 这些请求的话,我们常见都是使用 get 方式,比如说我们打开一个项目,这个项目 里面调用的这些接口信息,我们可以看到点击会议室,哎,这里面掉了一个接口,这个接口的话是把我们会议室的这些内容展示在我们的界面上面,那会议室这个接口调用之后,我们可以看到它的请求方式是一个 get 方式,比如说我们在登录的过程中, 点击登录的时候,它因为要传递的数据,比如说有 get, pos 的 等等这些不同的方式,那么在这个登录请求过程中,它选择的是 pos 的 方式, 那所以请求方式在这里面我们也可以看到。同时我们在看接口文档的时候,也最为关注到像 getpos 的 啊,包括像 swagger 这样的一些形式,我们也可以看到 getpos 的, 如果说你选择错误的方式去请求,那么服务器端他可能会给你返回一个四开头的请求错误的一个状态码,所以大家注意啊,四开头可能是你用到不对的,不正确的这种请求方式所导致的一些结果,返回错误不一定说是 bug 啊,所以我们在测试的时候一定要注意。 那么在这里面的话,我们继续来介绍 h b 常见的请求方法和用途。第二个, pos 的 一般来讲我们是用来创建新资源,比如说创建新用户,创建新订单,在创建的情况下面啊提交 pos 的 相关的一些请求。 第三个, put 全量更新资源啊,在更新的时候,我们做数据更新的时候用 put 这个请求啊,比如说 delete, 哎,这些内容的话我就不一个点了,分别对应到就是更新、删除,包括说获取响应头,包括在我们跨域的时候用到一些场景, 这个是我们接口 h d p 里面一些常见的方式。但我这章节最重要的一个东西是告诉大家,在实际开发中, 不是说开发人员就一定遵守这个什么 pos 的 put, 迪丽热这些使用的, 在实际开发过程中,我们常用的就是很多开发人员就是 get 方式获取数据, pos 的 负责侦查感就是它的删除可能也是用的 pos 的, 它的更新也是用的 pos 的, 它并不会遵循像 hdp 这个规范里面所提到这样。 所以接口测试具体采用哪一种方式去进行请求,以及说接口的参数是怎么传递,接口格式是接收还是 x m l, 这些东西都是由开发人员决定的, 作为测试人员,大家记住我们就是按照这个前后端确认的接口文档去进行测试就可以了,你不用去纠结说,你跟老师讲,老师我们公司更新数据也是用的 pos 的, 没关系的,知道吧? 就是不同的项目,不同的开发人员调用接口的方式设计的接口可能都会不一样, 咱们千万不能去纠结说,哎,我了解到这个协议它是这么规定的,那我们实际工作中是不是这么去做?比如说我去修改,那很多人他会讲,哎,我们公司点击修改的时候并不是通过什么 put 啊,我是直接通过 pos 的 方式的, 这也没有问题的,知道吧?所以我们一定要了解清楚它的一些用途、概念,以及最终的就是我下面讲的这一节。 好,那么接下来我们具体来讲一讲,通过 request 我 们怎么样去针对于不同接口请求类型、请求方法来进行具体的调用使用。

别以为你会调用接口就懂 http, 百分之九十的程序员都没搞清楚一次请求到底发生了什么。今天彻底拆解底层逻辑!当你在浏览器输入网址或点击链接时,就像寄快递前填写好收件地址和包裹内容。你需要明确告诉浏览器想要什么资源,比如打开某个网页,提交表单数据, 浏览器会先检查本地缓存是否有该资源,如果没有,就开始准备向服务器发送正式请求。这一步是整个 http 流程的起点,就像快递包裹的打包环节,决定了后续要发送的内容和目的地。浏览器无法直接通过域名找到服务器,就像寄快递只知道收件人姓名,却不知道具体门牌号, 这时需要 dns 域名系统帮忙解析。浏览器向本地 dns 服务器查询域名对应的 ip 地址,如果本地没有缓存,会逐层向上查询跟域名服务器、顶级域名服务器、权威域名服务器最 终拿到服务器的 ip 地址。这一步解决了去哪里找服务器的问题。就像查快递的精准门牌号。 http 基于 tcp 协议,发送请求前须先建立可靠连接。这就是三次握手 过程,类似打电话,第一次你说,喂,你在吗? s y n 服务器回复,我在,你呢? s y n 加 a c k, 你 在回应,我也在, 开始聊吧。 s c k。 三次握手,确保双方都能正常收发数据,避免无效连接浪费资源。就像确认快递员和收件人都在线,且能接受包裹。 tcp 连接建立后,浏览器会组装 http 请求报文发送给服务器。 报文包含三部分请求,形如 get 斜杠 index 点 html 表示要获取首页请求头,如浏览器类型可接受的文件格式。请求体,如表单提交的用户名密码。 这就向快递员把包裹和填写完整的面单交给快递站。面单上写着寄件人信息、收件人地址、包裹类型对应请求行和请求头。包裹里的物品就是请求体。 服务器收到请求后,先解析报文内容,比如 web 服务器,如 ninks, 会根据请求路径找到对应的资源或转发给应用服务器,如 node js 处理业务逻辑, 向查数据库计算订单金额。这就向快递站收到包裹后,根据面单分拣普通文件,直接取件复杂订单转后台系统处理,处理完成后,服务器会生成响应内容,准备返回服务器。处理完请求后,会组装 http 响应报文发送回浏览器。 报文包含响应型,如两百 ok, 表示请求成功。响应头,如资源类型、缓存时间。响应体,如 html 代码、图片数据。 这就向快递站处理完包裹后,把结果打包附上处理状态。如已发货对应两百 ok 物品,说明对应响应头,再把实际物品对应响应体寄回给你。响应发送完成后, tcp 连接会根据策略关闭或保持 http 一 点一默认开启 keeplife, 允许同意连接发送多个请求,就像打完电话不挂线,继续聊下一个话题,节省重新拨号时间。 若无需保持,双方会通过四次挥手关闭连接。服务器说,我发完了,浏览器确认收到,浏览器说,我也发完了,服务器确认好的。这就像快递交接完成后,双方确认没有遗漏再结束合作。 浏览器收到响应后,开始渲染页面,先解析 html, 生成 dom 数,再解析 css, 生成 cssom 数,两者结合成渲染数,接着计算元素位置布局,最后绘至到屏幕。 这就像收到家具、零件包裹,先把零件分类解析 html、 css, 再按说明书组装成完整家具渲染树,调整位置,放好布局,最后擦干净呈现绘质。你看到的网页就是这样一步步组装出来的。为提高效率,浏览器和服务器会利用缓存, 比如浏览器缓存常用资源,如 css 图片,下次请求时,若资源未过期,直接用本地副本, 就像记住朋友地址,下次寄快递不用再查。服务器也会设置缓存策略,如告诉浏览器这个资源可缓存一小时,缓存减少了重复请求。就像快递站把常用包裹提前备好,不用每次都重新打包请求过程中可能出现错误, 域名解析失败,找不到服务器,服务器无响应,超时资源不存在。四零四,服务器内部错误。五百, 浏览器会根据错误码显示提示,就像寄快递遇到问题,地址错了,四零四快递员告诉你找不到收件人,快递站着火,五百告诉你内部错误,无法处理这些错误码,帮助快速定位问题。比如四零四,检查 u i l 是 否正确。五零零联系服务器管理员。以上就是今天关于 e、 c、 h t、 p t 请求到底发生了什。