【问题标题】:Have a controller send back a response without Content-Type header让控制器发回没有 Content-Type 标头的响应
【发布时间】:2010-10-27 09:58:14
【问题描述】:

我在控制器中设置了 Rails 3 代理方法,如果允许用户使用 Nginx 的 X-Accel-Redirect 从远程服务器传递特定的 URI。

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

我试过的明显的没有用,因为值仍然是“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”,可以按预期工作,但控制器无法确定要传递的内容,这与远程服务器不同。

在没有该标头的情况下发送响应的最佳(最干净?)方式是什么?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    添加默认text/html content-type 的不是Rails,而是Rack:

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

    您最好的选择是编写自己的 Rack 中间件(或猴子补丁 Rack 本身)以完全不发送内容类型字段。

    【讨论】:

    • 我希望有更简单的方法。将控制器方法重构为 Rack 应用程序后,内容按预期交付。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2015-04-17
    • 2022-06-25
    • 2013-02-10
    • 2011-03-01
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多