HTTP协议那些不得不说的事

HTTP3.0和QUIC协议那些事 HTTP3.0和QUIC协议那些事 文章目录HTTP3.0和QUIC协议那些事一、HTTP2.0和HTTP3.01.1 HTTP2.0和TCP的爱恨纠葛1.2 谷歌为什么选择UDP1.3 QUIC协议和HTTP3.0二、QUIC详解2.1 队头阻塞问题2.2 0RTT 建链2.2.1 首次连接和非首次连接2.2.2 首次连接2.2.3 非首次连接2.3 前向安全问题2.4 前向纠错2.5 连接迁移2.6 改进的拥塞控制2.6.1 可插拔2.6.2单调递增的 Packet Number2.6.3 不允许 Re 阅读详情

1 HTTP基础

1.1 http发展历程

HTTP1.1的特点:

  • 持久连接。 即在一次TCP连接中多次发送http请求(对应返回头里的Connection: keep-alive),大大提高了传输效率。浏览器一般允许一个url最多6个tcp连接(同域内),再多的请求就需要复用tcp连接了。但返回数据是类似串行的,即如果服务端对第二个请求的响应比第一个还快,那也必须等第一个请求返回结果后才能返回,这个在http2中得到解决。
  • 增加了host和其他命令。 通过host字段可以用来区分同一台物理服务器提供的不同web服务。

HTTP2的特点:

  • 引入信道复用和分帧传输,数据是以二进制传输的(之前传输的字符串)。得益于此,HTTP2可以在同一TCP连接上连续快速的发送多个请求,并且可以无序的接收响应(类似于并行),大大提高传输效率。
  • 引入头信息压缩等技术提高传输效率。将每次http请求都会包含的header信息压缩(如 accept,Content-Type等),节省带宽提高传输效率。
  • 提供了推送的功能。

HTTP2和HTTP1的性能在线比较网站,HTTP2server push的性能比较,可以看出http2的性能提升主要原因在于信道复用和分帧传输技术。
在这里插入图片描述
在这里插入图片描述

1.2 发起一次请求浏览器端经历的过程

在这里插入图片描述
       浏览器发起请求所经过的各过程,先判断是否跳转,然后查看是否可以利用缓存,再根据域名解析IP,然后创建TCP连接,如果是https还要建立安全的连接,最后发出请求和接收响应数据。理解图中各节点有助于理解浏览器端原理,也可以根据耗时更好的判断性能优化点。

1.3 什么是跨域

       跨域是因为浏览器为了安全引入的同源限制策略:即浏览器限制页面内请求的url必须和地址栏的url处于同域上,也就是域名,端口,协议相同。注意其实跨域的请求已经发出,也接收到响应,但是浏览器拦截了。

  • 如何跨域?
    方法有很多。
    1.直接在服务器端设置允许跨域,即设置Access-Control-Allow-Orrigin:*可以允许跨域。
    2.利用jsonp,原理是AJAX直接请求普通文件存在跨域无权限访问的问题,不过我们在调用js文件的时候又不受跨域影响,所以在script中调用js凡是拥有scr这个属性的标签都可以跨域例如<script><img><iframe><link>等
    跨域比较复杂,这里简单了解。

1.4 数据协商:Accept 和Content

客户端和服务端传输数据时,需要协商和声明内容的格式,通过头来指定,下面介绍常见的几种header。

请求头含义
Accept客户端可接受的数据类型,如application/json, text/plain, */*
Accept-Encoding可接受的编码格式,主要指压缩方式,如gzip, deflate, br
Accept-Language支持的语言类型,如zh-CN,zh;q=0.9
User-Agent客户端浏览器的信息
Content-Type客户端提交时内容的类型

服务端返回响应时,从浏览器可接受的格式中选择一种返回,客户端浏览器根据响应头来进行解析。

响应头含义
Content-Type对应请求里的Accept,从可接受的数据格式中选择一种格式返回。开发中经常遇到application/json
Content-Encoding对应请求里的Accept-Encoding,服务端返回内容的压缩方式
Content-Language对应请求里的Accept-Language,服务端返回的语言类型

1.5 其他

  1. 302重定向
           302是重定向,在服务器端返回跳转地址。301是永久跳转地址,浏览器会缓存这个跳转地址,所以即使跳转地址变了浏览器还是会去之前那个跳转地址,直到清除浏览器缓存!

  2. Content-Security-Policy(CSP安全策略)
           Content-Security-Policy头是控制网站资源获取的一种安全策略,可以限制资源获取权限,向服务器报告资源获取越权。可以通过default-src限制网站请求的url,可以限制资源类型(如图片,media,font,script等等)。如通过Content-Security-Policy :'default-src http: https:'来限制只允许页面的http或https的请求,禁止脚本js代码执行请求。这个头支持很多安全策略,这里只做简单了解。

  3. URI、URL区别
           URI:统一资源标识符,包含URL和URN,是更抽象的概念。
           URL协议的常见格式:协议://主机地址:端口/path?query=string#hash ,如https://mp.youkuaiyun.com/mdeditor/8299#。协议包含http、ftp、file等;主机地址(ip或域名);端口为80时可省略,web服务端口一般为80;路由即文件路径或文件名有默认值(如index.html),可省略;后面可添加一些查询参数。可查看我的另一篇文章http从发出请求到接收响应的过程。

  4. 浏览器F12更多技巧:
    a). 可以根据多种属性来筛选请求
    在这里插入图片描述注意:这里的h2就代表了HTTP2的协议请求。connection-id代表tcp连接,不同的id对应一个新的tcp连接。
    b). 选择Slow 3G可以模拟网速较慢时候请求的情况,也可以在下面的custom add自定义上传和下载的速度。
    c). 勾选Disable cache就会强制不使用缓存。
    在这里插入图片描述

2. 关于浏览器缓存那些事

2.1 cache-control 缓存策略

cache-control 头可以设置很多值,根据类别有如下几种:

  1. public、 private、 no-cache可缓存性

       首先要知道在响应的返回内容所经过的网络服务或者路径中,有各种代理,缓存服务器等等(查看我的另一篇文章http从发出请求到接收响应的过程)。

  • public:返回经过的任何一个节点(代理,缓存服务器)都可以缓存;
  • private:只有发起请求的浏览器才可以缓存;
  • no-cache:指本地可以使用缓存,但是每次要经过服务器验证。也就是每次请求必须要到服务器进行验证,服务器回复可以使用缓存,客户端浏览器才可以使用本地缓存。no-cahce是最常用的策略,稍后会重点分析验证的过程。
  1. max-age 过期时间
           max-age设置缓存的过期时间,在时间过期之前,浏览器不会到服务器进行验证,即使服务器内容已经改变!解决办法有,打包后的js文件夹名根据js的内容生成hash码来命名。这样如果服务器端js文件有变化,则js的路径也会变化,也就是嵌入到页面内的url也会变化,所以浏览器就会根据新的url去请求js或静态资源而不是利用缓存了。
           s-maxage专门为代理服务设置的过期时间设置。

  2. must-revalidate 重新验证
            指max-age时间过期后,必须要请求服务验证。 proxy-revalidate相同的作用,只不过只用在代理服务器上。一般用不到这两个值,知道即可。

  3. no-store
           指永远不使用缓存,永远都要去服务器请求新的响应,和谷歌浏览器中勾选Disable cache作用类似。注意和no-cache的区别。
           no-transform 只用于代理服务器,告诉它不要瞎改服务器返回的内容(比如自作聪明的压缩、分割、转换了)

       注意:以上这些策略只是规范,而不是强约束。可以设置多个值,逗号分隔。

       客户端使用缓存的大概流程如下:
在这里插入图片描述
        使用no-cache,每次请求都会向服务器验证缓存,这里涉及到两个头Last-Modified和Etag。
        Last-Modified上次修改时间,浏览器请求后,服务器返回资源时会带上一个响应头Last-Modified指定一个时间。当浏览器再次请求时会通过If-Modified-Since头携带前面服务器返回的时间,然后服务器收到后和本地的修改时间做对比,如果等于上次修改的时间,说明资源没有变化,服务器就会告诉客户端浏览器可以使用你本地的缓存(即返回状态码304!!)。
        Etag是更加严格的验证,它会对资源作签名(如对资源内容进行hash)。同样的,服务器在返回资源时,响应头会带上Etag(hash生成的一个随机串)。然后浏览器再次请求时通过If-None-Match或If-Match携带这个随机串,服务器会进行比较,如果两个摘要随机串相同说明资源没有变更,就会回复客户端浏览器可以使用你本地的缓存(即返回状态码304!!)。

3. cookie

cookie的作用不再赘述,服务器通过set-cookie来设置cookie,cookie是键值对的形式,可以设置多个,浏览器下次请求就会带上cookie。

cookie还有多种属性:max-age和expires来控制cookie的过期时间;Secure指定cookie只在https时发送;HTTPOnly设置无法通过document.cookie来访问,这个是为了防止重要的cookie数据被恶意js代码来访问,预防XFS攻击;domain来设置cookie的域,如可以在一级域名test.com对应的服务器中设置cookie,这样去访问二级域名a.test.com或者b.test.com的服务器时,也可以携带cookie,即实现了共享cookie。

CNN经典网络模型(二):AlexNet简介及代码实现(PyTorch超详细注释版) CNN经典网络模型之一:AlexNet,本文包含其简介及代码,在PyTorch中实现,进行超详细注释,适合新生小白阅读学习~ 阅读详情

相关推荐

告别手动标注!PDMS NakiToolkit插件安装与初体验:以Pipeline工具为例

本文详细介绍了PDMS NakiToolkit插件的安装与使用,特别是其Pipeline工具如何通过自动化标注和材料统计功能大幅提升三维工厂设计效率。从环境准备到实战演示,帮助工程师告别繁琐的手动标注工作,实现项目交付周期的大幅缩短。

weixin_30047059的博客 352

HTTP协议违背事件分析

HTTP协议违背 1.1 请求URI过长 告警信息:the requested URL's length exceeds the capacity limit 描述:HTTP请求URI长度超过默认缓冲区大小,认为其不合规 1.2 请求头部过长 告警信息:request exceeds system's limit 描述:HTTP请求头部长度超过默认的缓冲区大小,认为其不合规 1.3 响应头部过长 告警信息:request exceeds system's limit 描述:HTTP响应头部超

m0_64197404的博客 8212

Altium Concord Pro 的应用范围,安装,和使用范围

Altium Concord Pro 的应用范围,安装,和使用范围。保证满足两者软件的最低安装要求。 Altium Concord Pro 是配合Digapcb,和MCAD,Altium 和相应机械设计软件的基础和交换桥梁

hanzhaos的博客 1122

HTTP学习(4)--违反协议的错误

在这一系列的第二篇博客中,我遇到了一个很严重的问题。当我通过浏览器访问图片的时候,图片可能会无法完全展示出来,尽管多次刷新有可能会完整的显示出来,但是通常还是会只是显示一部分的图片。我一开始认为这是因为网络的原因,但是本地测试,其实网络的原因基本上可以排除了。我把程序挂在服务器上给别人演示,几乎所有人都无法查看完整的图片,我给的说法也就是你多刷新几次就行了。现在想一想,还是太想当然了。 先来看一看这个错误吧! 错误及其解决方法 错误演示 因为第二篇博客的那个文章的代码有些多余了,所以这里提供一个简化的代码来

qq_40734247的博客 3112

智能音箱麦克风阵列实战:Python实现宽带GSC波束形成(附完整代码)

本文从工程实战角度,详细介绍了如何在智能音箱中利用Python实现宽带GSC波束形成算法。文章深入解析了广义旁瓣消除器(GSC)的核心架构,包括固定波束形成、阻塞矩阵与自适应滤波路径,并提供了完整的仿真代码、关键参数(如LMS步长)调优方法,以及面向嵌入式部署的计算优化与移植考量,旨在帮助开发者构建在真实噪声环境下高效工作的语音增强系统。

opencv7vision的博客 343

【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试

本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、

2501_92897788的博客 2289

python的none是什么-python中的none类型

--------------------------------与C不同,在python中是没有NULL,但存在相近意义的None。None表示空值,它是一个特殊 Python 对象, None的类型是NoneType>>> type(None)None在 Python 解释器启动时自动创建, 解释器退出时销毁。在一个解释器进程中只有一个 None 存在, 因为不可能有其他对象会使用 None 已...

weixin_37988176的博客 2975

深水区探秘:小红书App x-s参数逆向与高并发爬虫实战(2026版)

在移动互联网的碎片化时代,小红书凭借其“社区+电商”的独特模式,积累了超过3亿月活用户。其内容生态覆盖了从美妆、穿搭到旅行、数码等几乎所有垂直领域。对于数据分析师、市场研究员以及AI算法工程师而言,小红书平台蕴含的价值是巨大的——无论是热门趋势洞察、KOL画像分析,还是多模态图文数据的采集。然而,想要高效、稳定地获取小红书App的公开数据,却并非易事。与Web端相比,小红书App的防护体系堪称“铜墙铁壁”。其核心的反爬机制建立在动态混淆的加密参数之上,尤其是请求头中的X-SX-T以及X-S-Common。

2201_76125261的博客 270

HTTP协议相关理解

http协议相关面试题 1、游览器输入一个地址。到页面展示中间经历了哪些东西? #这个问题前端面试基本上百分百问的。测试的话,基础的功能面试可能不会问。自动化的话基本上也会问的。 1、游览器输入url。先解析url地址是否合法 2、游览器检查是否有缓存(游览器缓存-系统缓存-路由器缓存)。如果有,直接显示。如果没有,跳到第三步。 3、在发送http请求前,需要域名解析(DNS解析),解析获取对应过的ip地址。 4、游览器向服务器发起tcp链接,与游览器简历tcp三次握手 5、握手成功后,游览器向服务器发送h

Poo__Chai的博客 465

逆向工具:一文讲述 Ghidra 的详细使用

Ghidra是由NSA开源的一款功能强大的逆向工程框架,支持多平台、多架构和多种文件格式分析。本文详细介绍了Ghidra的核心优势、安装配置方法、主界面功能模块,并通过一个CrackMe示例演示了完整的逆向分析流程。文章还讲解了高级功能如交叉引用、控制流图分析、数据类型重建和脚本自动化等,最后提供了常见文件格式的分析技巧。作为IDA Pro的免费替代方案,Ghidra适合个人学习、教学和中小项目使用。(149字)

数据知道的博客 4353

【Python百日进阶-Web开发-Feffery】Day385 -“一起Dash”训练营Lesson-07_利用fac构建表单(上)

文章目录前言:fac是什么?“人生苦短,我用Python;Web开发,首选Feffery!”↓↓↓ 今日笔记 ↓↓↓一、费老师课堂1.1 什么是表单1.2 页面效果1.3 课堂源码二、课后作业2.1 页面效果2.2 项目源码 前言:fac是什么? feffery-antd-components(简称fac),是国内大佬费弗里(Feffery)老师基于著名的React UI组件库ant design进行二次开发,将ant design中的诸多实用组件及特性引入Dash,帮助开发者使用极低的纯Python代

专注于医院数据分析技术与系统开发的创作与分享。 253

HTTP协议相关漏洞

一、HTTP协议 HTTP是一个基于请求与响应模式的、无状态的应用层协议。 请求响应   客户端要向web服务器发送一个请求以后,等待服务器回送http响应消息。 无状态   http协议整个过程当中的各种信息不会被服务器所记录下来。 常基于TCP的连接方式 ,即http是将数据打包成TCP数据包来进行传送的,绝大多数Web应用,都是构建在HTTP协议之上,即目前使用浏览器访问web网站都是以http协议为标准的。 1、HTTP协议的方法 GET :请求获取Request-URI所标识的资源 POST :

qq_48904485的博客 1万+

基于matlab的CNN手写数字图像矫正系统

CNN 是一款强大的图像特征抽象和提取工具,常用于图像分类识别,并取得了较为理想的效果。我们通过 MATLAB 可以方便地设计不同结构、不同深度的 CNN 进行图像分类,最后一层一般设置为分类层(ClassificationLayer)进行类别标签的输出。如果我们将最后一层设计为回归层(RegressionLayer),则可以将其应用于对连续数据的预测,这对于曲线拟合、预测分析都有重要的意义。% 自定义 CNN 回归网络结构layers = [% 输入% 卷积% 池化% 池化% 卷积。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 677

让我看看HTTP协议到底怎么个事

在如今互联网时代,不了解HTTP协议真是寸步难行。进来,我们一窥其中法则

wzh18907434168的博客 808

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HTTP协议的那些事

上篇博客简单介绍了TCP和UDP的协议内容,本篇将继续探讨HTTP协议 引子 之前讲过的TCP和UDP是基于传输层上的协议,与程序员直接交互还比较少。 但是HTTP协议是应用层协议,也就是日常开发中用到最多的协议。 传输层的协议关注的是端到端的数据传输,而应用层协议就更关注传输数据的具体使用。 并且应用层协议很多情况下是程序员自己根据需求制定的,也就有了很多大佬写的协议模板, 这个HTTP协议就是这个模板之一。 HTTP协议虽然已经设计好,但是自身扩展性强,可根据自己需求自定义数据信息。 .

m0_56620669的博客 527

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

关于HTTP协议那些事

说到http协议,相信大家也都不陌生。毕竟是跟工作息息相关的,想着好好深入一下,正好看到了罗老师的《透视HTTP协议》,也算是说透了揉碎了,讲的明明白白。下面就里面的内容做了这篇学习总结开始之前先抛出几个问题:是什么在促进HTTP的发展?post请求是什么样的?缓存在浏览器network中的体现?HTTP的大文件传输?一切都在发展,想想更好的方案HTTP协议跟TCP/IP协议栈的关系下面就开始唠了~~~从无到有从简单到复杂从实现到不断的优化扩展从无人知晓到无人不晓。...

m0_72650596的博客 312

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HTTP协议那些事

HTTP请求模型 上图描述的http最最最基本的一个概况 两个端:客户端 和 服务端 两个动作: 客户端向服务端发起请求(request) 服务端对客户端进行响应(response) http协议是一种无状态协议,它维持不住当前的通信状态。 即:客户端发起请求,服务端响应,这就结束了,这是独立的一次轮回,如果想再请求,那么就会再来一次 请求响应,这两次轮回是相互独立的,互不影响。 浏览...

weixin_33813128的博客 120

http协议那些事

我们需要学习哪些内容呢?

sunny_night的博客 242

Http协议那点事

什么是 HTTP? 互联网是有关web 客户端和web 服务器之间的通信。 HTTP(HyperTextTransferProtocol)又叫超文本传输协议。本质上就是一个协定好双方如何进行交流沟通的约定。 HTTP 简史 HTTP / 0.9 - 单行协议 1989年,当时还在欧洲核子研究组织(CERN)工作的蒂姆·伯纳斯·李(Tim Berners-Lee)提出了一种能让远隔两地的研究者们共享知识的设想。最开始称为 Mesh,后来在 1990 年实施期间将其重命名为World...

爱琴孩的博客 499

[HTTP 系列] 第 2 篇 —— HTTP 协议那些事

这里是《写给前端工程师的 HTTP 系列》,记得有位大佬曾经说过:“大厂前端面试对 HTTP 的要求比 CSS 还要高”,由此可见 HTTP 的重要程度不可小视。文章写作计划如下,视情况可能有一定的删减,本篇是该系列的第 2 篇 —— 《HTTP 协议那些事》。这篇文章会涉及到 HTTP 协议,cookie 和 session,HTTP 首部/方法/状态码等。 更多文章可以关注我的 inter...

weixin_33826268的博客 415

编程那些事之HTTP协议

1)什么是HTTP 这是一个属于应用层面的面向对象的协议,UDP和TCP的是运输层协议。 2)HTTP的特点 (1)支持C/S模式 (2)简单快速,客户发送请求时候,只需要发送请求的方法和路径。请求的方法常用到的有GET、HEAD、POST. (3)灵活,允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 (4)无连接,限制每次连接只处理一个请求。处理完

faterman的专栏 598

【HTTP协议概览】那些你该知道的事

目录 先知道他是啥 明白他的场景 工作原理 最重要是他的使用及处理 他的封装也是必不可少 先知道他是啥 超文本传输协议 HyperTextTransferProtocol HTTP 用于分布式、协作式和超媒体信息系统的应用层协议 万维网的数据通信的基础 基于TCP/IP协议之上的应用层协议 基于 请求-响应 的模式 无状态保存 (自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个 级别,协议对于发送过的请求或响应都不做持久化处理。) 明白他的场景 客户端终...

BMG-Princess 293

HTTP协议一些事

from: http://hahack.com/wiki/sundries-http-web.html

longxibendi的专栏 1286
上一篇: http从发出请求到接收响应的旅行
下一篇: java8中stream最实用总结和调试技巧
余生之君
博客等级 码龄10年 246粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值