如何在 chrome 或 chromium 中禁用 HTTP/2?

Posted

技术标签:

【中文标题】如何在 chrome 或 chromium 中禁用 HTTP/2?【英文标题】:How to disable HTTP/2 in chrome or chromium? 【发布时间】:2017-07-15 02:48:36 【问题描述】:

我正在尝试调试 HTTP/1.1 和 HTTP/2 之间的差异。 是否有可能在 chrome 或 chromium 中禁用 HTTP/2? 我在 chrome 56 中找不到这个选项标志。我用 flag --disable-http2 尝试过 chromium 58:

./Chromium.app/Contents/MacOS/Chromium --disable-http2

但使用此标志后,内容仍使用 HTTP/2 协议传递:

【问题讨论】:

在使用此标志运行它之前,您是否已终止所有会话?实际运行时的 CLI 输出是什么 【参考方案1】:

为了它的价值,旗帜有效。

问题是您需要退出所有 Chrome 才能使其生效。包括插件垫片和其他 chrome 标签等。

仅仅添加命令行开关是不够的。

【讨论】:

Chromium 中的标志不起作用,因为我运行了 Chrome 实例。关闭 Chrome 并重新运行带有标志的 Chromium 解决了这个问题。 如果你指定不同的 --user-profile-dir 也可以。 不仅仅是插件垫片和标签,还有 chrome 应用程序! 您的答案是只针对disable-http2 还是针对所有标志? 一些标志,我不确定是否所有标志都需要这个,您需要根据具体情况进行测试。【参考方案2】:

当您尝试在 WebPageTest 中执行相同操作时会发生什么(选择 Chrome 作为测试代理并在高级设置下的 Chrome 选项卡中添加命令行开关)

这是我刚刚为我的个人网站所做的测试,该标志似乎工作正常(如果您查看响应标头,您会看到 HTTP/1.1)

https://www.webpagetest.org/result/170322_1B_ab8656afcfb8bcc4103e9872ff56c28b/1/details/#waterfall_view_step1

【讨论】:

【参考方案3】:

实现大致等效的更简单方法是使用 HTTP 代理,例如 https://www.telerik.com/fiddler。这为您的请求增加了可以忽略不计的额外时间,并且(据我所知)根本不支持 http/2(还);即使确实如此,我很确定切换行为会比重新启动所有 Chrome 窗口更容易/实用。

这种方法的优点是它立即生效 - 禁用和重新启用 HTTP/2 变得像启动和停止代理一样简单,而不会弄乱(如果你像我一样)你拥有的几十个 Chrome 选项卡打开,到 *** 和其他地方:)

【讨论】:

以上是关于如何在 chrome 或 chromium 中禁用 HTTP/2?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 javascript 中检测 Chrome/Chromium/V8 分析器是不是正在运行?

禁用 Microsoft Edge (Chromium) 开发人员模式扩展在启动时弹出

如何使用更改和删除事件在 firefox 和 chrome/chromium 上上传和列出目录

为啥 ChromeDriver 不需要 Chrome 或 Chromium?

在 Chromium Embedded 中禁用文本选择?

在无头打印到 PDF 中禁用 Chrome 的默认页眉和页脚