2010-10-27 14 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