如何在 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 上上传和列出目录