-
Notifications
You must be signed in to change notification settings - Fork 847
Description
As part of PR #7473, the Transfer-Encoding header was marked hop-by-hop. This means all Transfer-encoding headers were are removed before the proxy request is created. Transfer-encoding headers are only added back as appropriate for the sending from ATS to the origin.
This change was made to address issue #6907.
The mozilla specification https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Transfer-Encoding indicates that the Transfer-Encoding is a hop-by-hop header, so assuming we interpret the incoming transfer-encoding header the change in PR #7473 is correct and lines up with the spec.
However @bryancall pointed out that ATS really only interprets the chunked value of the Transfer-Encoding header. According to the Mozilla document there are several other values that deal with compressing the data as it is transferred.
Transfer-Encoding: compress
Transfer-Encoding: deflate
Transfer-Encoding: gzip
Transfer-Encoding: identity
In addition in our logic to translate HTTP/1.1 headers to HTTP/2, the transfer-encoding header is stripped. Which again is fine for chunked, but ignores any compression-oriented values of the header.
It seems these days that the vast majority of uses of transfer-encoding headers are just chunked. In fact it is very hard to find articles discussing the other options. So we don't need a particularly efficient solution here. In fact it may be sufficient to just log warnings when we drop these headers.