Remove unnecessary HTTP headers in my rails answers
http, ruby-on-rails
Solution
You can do this with a piece of Rack middleware. See https://gist.github.com/02c1cc8ce504033d61bf for an example of to do it in one.
When adding it to your app config, use something like `config.middleware.insert_before(ActionDispatch::Static, ::HeaderDelete)`
You want to insert it before whatever the first item in the list that displays when you run `rake middleware`, which in my case is `ActionDispatch::Static`.
http://guides.rubyonrails.org/rails_on_rack.html may be somewhat helpful if you haven't been exposed to Rack in the Rails context before.
Problem
I am currently developing an API where size matters: I want the answer to contain as few bytes as possible. I optimized my JSON answer, but rails still responds with many strange headers ``` HTTP/1.1 200 OK Server: nginx/0.7.67 # Not from Rails, so ok. Date: Wed, 25 Apr 2012 20:17:21 GMT # Date does not matter. We use ETag Can I remove this? ETag: "678ff0c6074b9456832a710a3cab8e22" # Needed. Content-Type: application/json; charset=utf-8 # Also needed. Transfer-Encoding: chunked # The alternative would be Content-Length, so ok. Connection: keep-alive # Good, less TCP overhead. Status: 200 OK # Redundant! How can I remove this? X-UA-Compatible: IE=Edge,chrome=1 # Completely unneded. Cache-Control: no-cache # Not needed. X-Request-Id: c468ce87bb6969541c74f6ea761bce27 # Not a real header at all. X-Runtime: 0.001376 # Same goes for this X-Rack-Cache: invalidate, pass # And this. ``` So there are lots of unnecessary HTTP headers. I could filter them in my server (nginx), but is there a way stop this directly in rails?