Giter VIP home page Giter VIP logo

Comments (6)

cfal avatar cfal commented on June 2, 2024 1

Thanks a lot for the info. This did turn out to be a server-specific issue due to User-Agent 😅

from ureq.

algesten avatar algesten commented on June 2, 2024

If you send accept-encoding: identity and the server responds with gzip, is it not the server that failed to obey the request header?

ureq does not double check the server fulfils the accept-encoding, and whether it should can be debated, but from your description i'm a bit unclear of whether there's an outright bug here.

It sounds like you describe this:

ureq -> send accept-encoding: identity -> server
ureq <-    sends gzipped content back  <- server

from ureq.

jsha avatar jsha commented on June 2, 2024

To be clear, there are two separate pairs of headers:

Accept-Encoding: https://tools.ietf.org/html/rfc7231#section-5.3.4
Content-Encoding: https://tools.ietf.org/html/rfc7231#section-3.1.2.2

TE: https://tools.ietf.org/html/rfc7230#section-4.3
Transfer-Encoding: https://tools.ietf.org/html/rfc7230#section-3.3.1

Both Content-Encoding and Transfer-Encoding have a "gzip" option.

Also worth noting:

https://tools.ietf.org/html/rfc7230#page-13

For example, an
origin server might disregard the contents of a received
Accept-Encoding header field if inspection of the User-Agent header
field indicates a specific implementation version that is known to
fail on receipt of certain content codings.

from ureq.

cfal avatar cfal commented on June 2, 2024

If you send accept-encoding: identity and the server responds with gzip, is it not the server that failed to obey the request header?

I guess the issue is that I am unable to reproduce this behavior with the server in question when I'm testing with curl or wget. I see that it's always respected. When running with ureq, providing the same headers, the response to the GET request is always gzipped and chunked, when I want neither, and when I have specified 'identity' in Accept-Encoding and Transfer-Encoding. I believe additional headers are causing this but haven't yet discovered where they are being added. There doesn't seem to be an easy way to print out the traffic in ureq at the moment, perhaps modifying send_prelude to see exactly what is being sent is an option.

I ended up switching to another solution so I'm not sure I will have time to follow up. Please feel free to close if you think this is a server issue. Thanks for the quick responses!

from ureq.

jsha avatar jsha commented on June 2, 2024

I guess the issue is that I am unable to reproduce this behavior with the server in question when I'm testing with curl or wget. I see that it's always respected. When running with ureq, providing the same headers, the response to the GET request is always gzipped and chunked

If you want to share the name of the server, and the code you used, I'd be curious to check this out. The main thing that occurs to me is that the server might be detecting certain User-Agent strings and changing behavior based on that; you could try setting the User-Agent to match curl.

I have specified 'identity' in Accept-Encoding and Transfer-Encoding

What happens if you specify neither?

BTW, you probably want to specify identity in TE rather than Transfer-Encoding. And the server is allowed to returned chunked encoding regardless; chunked encoding support is mandatory in HTTP.

from ureq.

jsha avatar jsha commented on June 2, 2024

from ureq.

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.