【问题标题】:Force HTTP1.1 instead of HTTP2 through Proxy (Charles) [closed]通过代理(Charles)强制使用 HTTP1.1 而不是 HTTP2 [关闭]
【发布时间】:2017-01-23 14:54:18
【问题描述】:

自从我们将客户端更新为 HTTP2 后,我在将文件映射到本地资源时遇到了问题。我们通常使用 Charles (App) 来执行此操作,但自从我们更新到 HTTP2 后,我们遇到了一些错误。

它似乎缩短了文件,只加载了一小部分文件。然后查尔斯回了一条失败消息说: 客户端在收到整个响应之前关闭了连接

我一直在大型互联网上寻找答案,但还没有找到任何答案。

希望这里有一些聪明的头脑。

【问题讨论】:

  • 也许升级到支持 HTTP/2.0 的 Charles 4 ?
  • 已经这样做了。自从我这样做以来就一直在发生。
  • 我会查看中间有和没有查尔斯的流量捕获。看起来像是 Charles 4 中的一个缺陷,但值得排除客户端或服务器行为不端。
  • 最新版的Charles 4.0.2还是有问题。有没有办法告诉Charles不支持HTTP/2,强制HTTP/1.x?
  • @RomanK 我们仔细研究了流量并测试了不同的场景。这似乎肯定是查尔斯的原因。它将我们的消息截断为 16KB

标签: http proxy mapping http2 charles-proxy


【解决方案1】:

我们已经在 Charles 4.1.2b2 中解决了这个问题。请从https://www.charlesproxy.com/download/beta/尝试一下

请让我知道这是否可以为您解决问题!我们计划很快推出这个构建版本,特别是在我们有更多用户确认解决方案后。

【讨论】:

    【解决方案2】:

    我发现的一种解决方法是在启动 Chrome 时使用 disable-http2 标志。在 MacOS 中,终端命令为:

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-http2
    

    在 Windows 中,您可以使用 --disable-http2 选项更改启动快捷方式。

    【讨论】:

      【解决方案3】:

      正如您所说,由于客户端已更新,问题就出现了,您是否仔细检查了与任何客户端缓存问题相关的所有点? (参见here Charles 中的无缓存工具)

      您可以使用"Upgrade header" 强制更改http协议版本:

      Upgrade 头域是 HTTP/1.1 中引入的 HTTP 头域。在交换中,客户端首先发出一个明文请求,随后将其升级到更新的 http 协议版本或切换到不同的协议。 连接升级必须由客户端请求如果服务器想要强制升级,它可能发送 426 upgrade required response。然后,客户端可以在保持连接打开的同时发送带有适当升级标头的新请求。

      【讨论】:

      • 但我们想降级而不是升级
      猜你喜欢
      • 2015-06-11
      • 2021-03-17
      • 2019-06-03
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      相关资源
      最近更新 更多