2010-10-27 93 views
2

我已经在控制器中设置了一个Rails 3代理方法,使用Nginx的X-Accel-Redirect从远程服务器传递一个特定的URI,如果用户是被允许。让控制器发回没有Content-Type头的响应

不幸的是,Rails总是发送某种类型的Content-Type头,它的优先级高于从上游服务器返回的头。我尝试了各种方式来“说服”响应,而不是包含任何Content-Type头,但它们没有效果或引发异常。响应主体当然是空的,因为它无论如何都被忽略了。

显而易见的那些我试过没有工作,因为值保持为“text/html的;字符集...”:

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

当然,设定一个特定的内容类型,如“图像/ gif“按预期工作,但控制器无法确定要传送什么内容,与远程服务器不同。

什么是最好的(干净?)的方式发送没有头的回应?

回答

0

这不是Rails的,但是架,增加了默认text/html内容类型:

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

你最好的选择就是写自己的Rack中间件(或猴子补丁机架本身)不发送内容类型字段。

+0

我希望有一个更简单的方法。将控制器方法重构为Rack应用程序后,内容按预期交付。 – icanhasserver 2010-10-27 19:03:04