Giter Site home page Giter Site logo

Comments (13)

untitaker avatar untitaker commented on April 28, 2024 1

Some servers send me a gzip-compressed response without me asking for it, so practically I must always be prepared for such responses.

Unfortunately the RFC's language isn't very clear what the server is supposed to do if no Accept-Encoding header is sent. From RFC 2616:

If no Accept-Encoding field is present in a request, the server MAY assume that the client will accept any content coding.

https://tools.ietf.org/html/rfc2616#section-14.3

From the newer RFC 7231:

A request without an Accept-Encoding header field implies that the user agent has no preferences regarding content-codings. Although this allows the server to use any content-coding in a response, it does not imply that the user agent will be able to correctly process all encodings.

https://tools.ietf.org/html/rfc7231#section-5.3.4

from hyper.

reem avatar reem commented on April 28, 2024

Compression specifically could be left up to downstream things to implement. Not sure this is the domain of an http library.

from hyper.

seanmonstar avatar seanmonstar commented on April 28, 2024

Looking through the spec, it does seem like its an optional thing, as opposed to chunked which the spec says a server MUST understand chunked to 1.1 compatibile.

from hyper.

untitaker avatar untitaker commented on April 28, 2024

See also https://stackoverflow.com/questions/8364640/how-to-properly-handle-a-gzipped-page-when-using-curl

from hyper.

seanmonstar avatar seanmonstar commented on April 28, 2024

A header of "Accept-Encoding: identity" means the user agent is
specifically requesting no compression. Does that help your case?

On Sat, Jan 23, 2016, 11:22 AM Markus Unterwaditzer <
[email protected]> wrote:

See also
https://stackoverflow.com/questions/8364640/how-to-properly-handle-a-gzipped-page-when-using-curl


Reply to this email directly or view it on GitHub
#2 (comment).

from hyper.

untitaker avatar untitaker commented on April 28, 2024

Probably, though I'd still prefer if Hyper handled this transparently for me (even if behind a featureflag).

Would setting this as a default header (on Hyper's side) be acceptable?

from hyper.

seanmonstar avatar seanmonstar commented on April 28, 2024

I'm not so certain that this is a decision that hyper should default to. As you noticed in 7231, sending no header is valid, and implies no preference. If a user of hyper hasn't stated otherwise, I don't think we can assume a preference.

A higher level Client wrapper would probably be the place to be more opinionated, methinks.

from hyper.

untitaker avatar untitaker commented on April 28, 2024

This has bitten me again. This time a different library, @SimonSapin's kuchiki provides a parse_html().from_http(url) interface, but doesn't explicitly set a header. The result is a garbage DOM.

If a user of hyper hasn't stated otherwise, I don't think we can assume a preference.

If a user of hyper hasn't stated otherwise, I don't think we can assume they'd thought about it.

from hyper.

seanmonstar avatar seanmonstar commented on April 28, 2024

Again, does asking for identity fix the issue?

from hyper.

untitaker avatar untitaker commented on April 28, 2024

Sorry, it seems to be an issue with the server in this case.

EDIT: Yes, in the previous instance, setting Accept-Encoding: identity helped.

from hyper.

SimonSapin avatar SimonSapin commented on April 28, 2024

(@untitaker I’ve extended kuchiki’s from_http to also except an hyper::client::Response so that you can set headers and make the request yourself. In that case, the point of using it from_http instead of read_from with a Response as a generic std::io::Read is that it gets the charset from Content-Type, if any.)

from hyper.

Trolldemorted avatar Trolldemorted commented on April 28, 2024

@seanmonstar is it possible to set the headers once per client, so that we don't have do add them with every request?

from hyper.

seanmonstar avatar seanmonstar commented on April 28, 2024

@Trolldemorted not in hyper. Such a feature does exist in reqwest, though!

from hyper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.