我最近看到一个GET调用,它将Transfer-Encoding标头设置为Chunked。我们从这个调用中注意到的是延迟然后是500个套接字超时。
深入挖掘,我们展示了来自ELB和Apache Web服务器的500的这种行为。
值得注意的是,如果我们使用Transfer-Encoding作为Chunked进行GET调用并包含空的有效负载,则在我们的情况下ELB允许请求正常进行。
鉴于此ELB和Apache Web服务器会出现此行为,我的问题是在HTTP GET调用上发送传输编码为Chunked是否有效?
答案 0 :(得分:2)
Transfer-Encoding
标题现在由RFC 7230, section 3.3.1授权(另请参阅IANA Message Header Registry。您会发现此标头是HTTP消息框架的一部分,因此它对两者都有效,要求和回应。
请记住GET
requests may carry bodies,服务器的反应绝对正确。导致500跟随的延迟的原因可能如下:服务器会期望一个正文但找不到一个,因为空字符串的块编码表示不是空字符串而是zero-sized chunk。结果,服务器正在运行超时。