On 4/28/2016 2:54 AM, Daniel Stenberg wrote:
On Wed, 27 Apr 2016, Ray Satiro via curl-library wrote:

I've noticed twitter is sending http2 gzip responses even though I'm not using --compressed. I haven't encountered any other business that does that. Is that allowed by the RFC? I searched it for gzip but it's not mentioned once, and the compression sections seem to apply mostly to headers. Web search only shows [1].

I believe it is fine by the spec[1]. Content-Encoding is the server specifying how the content is encoded and it can be gzipped. It doesn't necessarily have be negotiated with Accept-Encoding I believe. The modern way of using content-encoding gzip is after all a glued on "abuse" that we've grown attached to, as it was originally intended that Transfer-Encoding should be the method to compress data for transfer. And basically nothing execept curl supports gzipped Transfer-Encoding...

I also think that there are more sites than just twitter thay does this. I've seen it used by for example gzipped tarballs hosted on places.

But I'll agree that it is interesting that twitter decides to only do this gzip trick over h2 and not h1. I suspect they do that for other reasons. For example all the h2 clients are going to be fairly modern so maybe they just then draw the conclusion that such clients are likely to handle gzip content automatically too?

[1] = https://tools.ietf.org/html/rfc7231#section-3.1.2.2


Unfortunately for me this looks to be correct. As Tatsuhiro hinted at, this is probably related to [1] which did not end up as part of HTTP/2 RFC 7540. Also, Twitter ignores Accept-Encoding if it's empty or I request identity, and even if I specifically exclude using gzip;q=0 I still get gzip, but that is not explicitly forbidden by HTTP/1.1 semantics RFC [1]:

"If an Accept-Encoding header field is present in a request and none of the available representations for the response have a content-coding that is listed as acceptable, the origin server SHOULD send a response without any content-coding."

SHOULD not MUST.

[1]: https://github.com/http2/http2-spec/commit/1471d74
[2]: https://tools.ietf.org/html/rfc7231#section-5.3.4

-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:  https://curl.haxx.se/mail/etiquette.html

Reply via email to