代码之家  ›  专栏  ›  技术社区  ›  CFL_Jeff

为什么我必须在AWS应用程序负载平衡器中禁用HTTP/2以防止出错?

  •  0
  • CFL_Jeff  · 技术社区  · 7 年前

    当我使用 应用程序负载平衡器(ALB) ,我的某些web服务终结点将不会返回任何数据,并且我的Chrome浏览器将为某些http调用报告此错误: ERR\u SPDY\u协议\u错误

    一经发现 this recommendation HTTP/2 支持我的ALB配置,现在一切正常。

    为什么我必须禁用 HTTP/2 在我的ALB里?这里的根本问题是什么?我是否需要更改web服务代码中的某些内容以便使用 ?

    使现代化

    HTTP/1.1 200
    Date: Wed, 09 Jan 2019 21:39:13 GMT
    Content-Type: application/json;charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Locations Reached: Data to populate locations reached map
    

    1 回复  |  直到 7 年前
        1
  •  5
  •   Barry Pollard    7 年前

    通常意味着您有一个无效的HTTP/2头。在这方面,HTTP/2比HTTP/1.1更严格。

    因此,名称中带有冒号、空格、新行(例如,在配置中打开引号但忘记关闭引号)等的HTTP头名称无效(这些名称可以存在于头值中,但不存在于名称中)。

    有关如何调试的详细信息,请参见此处: https://www.michalspacek.com/chrome-err_spdy_protocol_error-and-an-invalid-http-header .

    将您的HTTP/1.1响应标题添加到您的问题中,也许可以为您指明正确的方向。