AWS Application Load Balancer 将所有 headers 转换为小写

AWS Application Load Balancer transforms all headers to lower case

我在两个 EC2 实例中有一个 REST API 应用程序 运行,并且长期使用 AWS Classic Load Balancer。 REST API 的客户端依赖响应 headers(例如 Location)。

我知道 HTTP headers 根据定义是 case-insensitive,但是(不幸的是)一些客户忽略了这一点并以 case-sensitive 方式检查 headers(例如他们希望 Location 以大写开头。

最近我已更改为 AWS Application Load Balancer,现在我看到它将所有响应 headers 转换为小写,因此客户端无法正确处理响应。

我有几个问题。

  1. 这是 Application Load Balancer 的预期行为吗?
  2. 有没有办法将其配置为 return headers,因为它们已由应用程序构建?

这是 ALB 的预期功能,因为 HTTP/2 lowercases all headers and ALBs support HTTP/2。不幸的是,您不能修改 headers 是如何被 ALB 操纵的。

更新:见下方评论。我所说的 ALB 由于支持 HTTP/2 而将请求 headers 小写可能并不准确。

当我们从 TCP ELB 切换到 HTTPS ELB 时,这导致我们损坏的客户端失败。

在修复客户端时,我们暂时禁用了默认启用的新 ELB HTTP/2 支持。