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

vto*_*tor 11 amazon-ec2 amazon-web-services http-headers amazon-elb

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

我知道HTTP标头根据定义不区分大小写,但是(不幸的是)一些客户端忽略了这一点,并以区分大小写的方式检查标头(例如,他们希望Location以大写字母开头).

最近我改为AWS Application Load Balancer,现在我发现它将所有响应头转换为小写,因此客户端无法正确处理响应.

我在这里有几个问题.

  1. 它是Application Load Balancer的预期行为吗?
  2. 有没有办法将它配置为返回标题,因为它们是由应用程序构建的?

jzo*_*mtn 12

它是ALB的预期功能,因为HTTP/2会降低所有标头和ALB 支持HTTP/2.遗憾的是,您无法修改ALB操纵标头的方式.

更新:请参阅以下评论.我声明ALB由于支持HTTP/2而降低了请求标头可能不准确.

  • 测试表明此答案部分不正确或不完整.当在HTTP/2模式下处理请求时,ALB确实似乎将标头强制为小写 - 因为它必须 - 但是当客户端不支持HTTP/2时,此强制**不会**出现发生......所以它不仅仅发生*因为ALB支持*HTTP/2,而是*因为客户端使用*HTTP/2.如果客户端看到小写标题,那么看起来必然是客户端必须向ALB说HTTP/2 ...这意味着如果小写失败则客户端被破坏. (4认同)

マルち*_* だよ 8

当我们从 TCP ELB 切换到 HTTPS ELB 时,这会导致我们损坏的客户端出现故障。

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

在负载均衡器属性中禁用 HTTP/2