You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix gzip middleware to respect q=0 values in the Accept-Encoding header.
Problem
According to RFC 9110, an encoding with q=0 is explicitly unacceptable. The current implementation does not respect this quality value and may enable gzip even when the client sends:
Accept-Encoding: gzip;q=0
Solution
Update the gzip negotiation logic to honor q=0 quality values and skip gzip when it is explicitly marked as unacceptable.
Testing
added a regression test covering Accept-Encoding: gzip;q=0
@aldas
I don't know of a mainstream browser that sends gzip;q=0 by default.
My motivation was standards compliance, but there's also another issue with the current implementation: it uses a substring match, so values like x-gzip or supergzip also enable gzip even though they are different coding tokens.
Since Accept-Encoding is a structured header, I thought it would be better to match coding tokens explicitly rather than relying on strings.Contains.
Maybe this thing could be helper function that people that need this feature could use in Skipper function.
At the moment the client can opt out from gzip is by not sending gzipAccept-Encoding so doing all this "acrobatics" to support disabling gzip with Accept-Encoding: gzip;q=0 feels little bit overdoing it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fix gzip middleware to respect
q=0values in theAccept-Encodingheader.Problem
According to RFC 9110, an encoding with
q=0is explicitly unacceptable. The current implementation does not respect this quality value and may enable gzip even when the client sends:Accept-Encoding: gzip;q=0Solution
Update the gzip negotiation logic to honor
q=0quality values and skip gzip when it is explicitly marked as unacceptable.Testing
Accept-Encoding: gzip;q=0go test ./middleware