让控制器发回没有Content-Type标头的响应

我在控制器内部设置了一个Rails 3代理方法,如果允许用户,则使用Nginx的X-Accel-Redirect从远程服务器提供特定的URI。

不幸的是,Rails总是发送某种Content-Type头,它优先于从上游服务器返回的头。 我已经尝试了各种方法“说服”响应,根本不包含任何Content-Type标题,但它们没有效果或引发exception。 响应主体当然是空的,因为它无论如何都被忽略了。

我试过的那些显而易见的没有用,因为价值仍然是“text / html; charset ……”:

response.headers['Content-type'] = '' response.headers['Content-Type'] = nil response.headers['Content-Type'] = '' response.content_type = '' response.content_type = nil 

当然,设置特定的内容类型,如“image / gif”按预期工作,但控制器无法确定将要传送的内容,与远程服务器不同。

发送没有该标题的响应的最佳(最干净?)方式是什么?

它不是Rails,而是添加默认text/html内容类型的Rack:

http://rack.rubyforge.org/doc/Rack/ContentType.html

您最好的选择是编写自己的Rack Middleware(或Monkey-patch Rack本身),根本不发送内容类型字段。