GithubHelp home page GithubHelp logo

Whitelist by mime type about gziphandler HOT 7 CLOSED

nytimes avatar nytimes commented on September 25, 2024 1
Whitelist by mime type

from gziphandler.

Comments (7)

meirf avatar meirf commented on September 25, 2024 1

@tmthrgd, do you have an opinion on this?

from gziphandler.

meirf avatar meirf commented on September 25, 2024 1

I’ve uploaded a PR with what I think are the best ideas y’all have presented: not changing the api, backwards compatible, ignoring white space and allowing mime-only comparison.

One thing I didn’t include was subtype catch-all comparisons, e.g. "text/*". Though some people might not differentiate between text/plain and text/html, I think some would. But more importantly this type of pattern leaves the comfort of the standard library’s parsing and has much higher likelihood of introducing bugs in our code and in clients'. I think MIME type is a happy medium between what we had before and ignore subtype, but if you disagree with this, I'm happy to change the PR. Also, I think the subtype thing is something we could add later without breaking what's in this new PR.

from gziphandler.

jprobinson avatar jprobinson commented on September 25, 2024

Could we perhaps make just 1 new option, func AcceptsGzip(func(*http.Request) bool) option and then folks can do whatever they please within it?

from gziphandler.

adammck avatar adammck commented on September 25, 2024

I agree that we should have an Accepts option as @jprobinson suggests, but I suspect that the most common usage of that would be to implement MimeTypes([]string). So perhaps we should just add that option, too. In hindsight, that seems more useful than ContentTypes. Maybe deprecate that.

from gziphandler.

jprobinson avatar jprobinson commented on September 25, 2024

From what our wise friend @adammck says, I think the MimeTypes(types []string) option would be worth bringing in but if you have the will to make all of the above, go for it.

from gziphandler.

tmthrgd avatar tmthrgd commented on September 25, 2024

I'd be in favour of this. 👍

In my fork this is how I chose to implement ContentTypes already. (See here and here).

It looks like the existing behaviour is somewhat broken anyway. text/html;charset=utf-8 won't match text/html; charset=utf-8 (note the space), yet they are semantically identical.

I also can't see a situation where anyone would depend on, say, compressing charset=utf-8 but not compressing charset=us-ascii.

My one concern is the proliferation of exported symbols in this package (compare NYTimes/gziphandler with tmthrgd/gziphandler). Considering the documentation of ContentTypes doesn't explicitly state it's behaviour, perhaps it would be acceptable to change ContentTypes to strip the directives and whitespace before comparisions.

That's my 2c anyway.

from gziphandler.

meirf avatar meirf commented on September 25, 2024

Merged #69
Thanks!

from gziphandler.

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.