AWS ELB 400 BAD_REQUEST,在URI末尾有空格

我们正在使用AWS ELB进行HTTP / S负载平衡,而且我们遇到了ELB的一个非常疯狂的问题。

$ curl -i "http://yourdomain.com/ " HTTP/1.1 400 BAD_REQUEST Content-Length: 0 Connection: Close 

看起来,AWS ELB正在做一些split(' ', $first_line)[2]寻找HTTP / 1.x版本的方式。 这个请求在技术上不正确是可以理解的。 URI和HTTP / 1.x版本之间应该有一个空格。 但真的吗? 与互联网上的其他每个HTTP守护程序不同,这个简单的请求会因AWS ELB而失败。

这是真的吗? 任何人都可以复制这个问题吗?

这有点老,但希望答案可以帮助其他人。 我正面临着一些embedded式设备的问题(我无法更改执行HTTP请求的代码)。

ELB代理正在处理这个问题(并且你得到了正确的答案:400错误的请求)。 这些空格应该是URL编码的。 一些networking服务器和代理服务器可以容忍这些空间(Apache和Squid,至less最近的版本是例子),但是在AWS ELB中运行的任何软件都不是。