2012-12-03 64 views
2

我想從Heroku上運行的Rails應用程序中的ruby中的http響應標頭中刪除服務器信息,但卡住了。檢查響應頭給我:如何從我的Rack應用程序中刪除「服務器」HTTP響應標頭

Server:thin 1.5.0 codename Knife 

任何人都可以點我在正確的方向?

+0

http://stackoverflow.com/questions/10323331/remove-unnecessary-http-headers-in-my-rails-answers – 2012-12-03 22:15:26

+0

@slivu在所有Rack中間件返回後,「服務器」標題由Thin添加,您鏈接的問題僅涉及刪除應用程序添加的其他標頭。 (另一個建議使用nginx去掉頭文件的答案可以工作,但不能在Heroku雪松堆棧上。) – matt

回答

1

這個Server頭部在組裝響應時是set by the Thin server。 A recent commit adds the ability to set the Server to something else,但它看起來並不像你可以完全移除它。

一兩件事你可以做的是設置Thin::VERSION contsant到nil,這導致沒有Server頭的值被髮送:

Thin.send :remove_const, :SERVER 
Thin::SERVER = nil 

第一行是爲了避免將產生時警告改變一個常數。現在當Thin嘗試設置Server標題時,它看到它是nilskips it,因此根本沒有設置標題。

+0

謝謝馬特。出於某種原因,這對我來說似乎有些ha to。我剛剛找到了一個使用Rack中間件的解決方案(現在會發布這個),我更喜歡這個解決方案。 –

+1

@JonasGrau我同意這有點破解,但添加'Server'頭部的代碼幾乎被「硬編碼」爲Thin,所以我不知道如何控制它。我會有興趣看到你的中間件解決方案 - 據我所知,在所有中間件已經運行並且獨立於Rack之後添加了頭部,所以我不認爲你可能會影響中間件的頭部。 – matt

相關問題