]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: compression: Set Vary: Accept-Encoding for compressed responses
authorTim Duesterhus <tim@bastelstu.be>
Mon, 17 Jun 2019 14:10:07 +0000 (16:10 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 17 Jun 2019 16:51:43 +0000 (18:51 +0200)
commit721d686bd10dc6993859f9026ad907753d1d2064
tree4876108e6fd8105c67b92bfdd0bea98602a60d38
parenta110ecbd843e156dd01c6ac581c735be5e240d5b
BUG/MEDIUM: compression: Set Vary: Accept-Encoding for compressed responses

Make HAProxy set the `Vary: Accept-Encoding` response header if it compressed
the server response.

Technically the `Vary` header SHOULD also be set for responses that would
normally be compressed based off the current configuration, but are not due
to a missing or invalid `Accept-Encoding` request header or due to the
maximum compression rate being exceeded.

Not setting the header in these cases does no real harm, though: An
uncompressed response might be returned by a Cache, even if a compressed
one could be retrieved from HAProxy. This increases the traffic to the end
user if the cache is unable to compress itself, but it saves another
roundtrip to HAProxy.

see the discussion on the mailing list: https://www.mail-archive.com/haproxy@formilux.org/msg34221.html
Message-ID: 20190617121708.GA2964@1wt.eu

A small issue remains: The User-Agent is not added to the `Vary` header,
despite being relevant to the response. Adding the User-Agent header would
make responses effectively uncacheable and it's unlikely to see a Mozilla/4
in the wild in 2019.

Add a reg-test to ensure the behaviour as described in this commit message.

see issue #121
Should be backported to all branches with compression (i.e. 1.6+).
reg-tests/compression/vary.vtc [new file with mode: 0644]
src/flt_http_comp.c