2012-05-23 36 views
42

我想刪除X-Powered-By for Security,在ExpressJS(node.js)中保存帶寬。怎麼做? 它可能是過濾器(app.use)?如何刪除ExpressJS中的X-Powered-By

app.use(function(req,res,next_cb){ /* remove X-Powered-By header */ next_cb(); } 

回答

56

做一箇中間件,像這樣:

app.use(function (req, res, next) { 
    res.removeHeader("X-Powered-By"); 
    next(); 
}); 

參見如何刪除頭的詳細信息:

http://nodejs.org/api/http.html#http_response_removeheader_name

更新:

我就是在那個時候,有做更好的辦法不知道(因爲許多建議,以下同):

app.disable('x-powered-by'); 
+0

這不是理想的/完美的/正確的答案。看到最讚的人。乾杯! – ptz0n

+1

確實,更新了我的回答以反映這一點。 – alessioalex

+0

我剛剛測試過'app.disable('custom1');'它工作正常(它從服務器響應中刪除了標題)。但後來我註釋了'app.disable('custom1');'和標題再次出現......這是正常的嗎?我不再有'res.header(「custom1」,「test」);'在我的代碼中,因爲我不再需要這個頭文件,但它仍然出現... – neoDev

124

不要刪除它;問快遞不產生它擺在首位:

https://stackoverflow.com/a/12484642/506073

轉到您的app.js,只是後:

var app = express(); 

地址:

app.disable('x-powered-by'); 
+9

國際海事組織,這應該是答案 - 中間件是一個性能打擊每一個請求,爲什麼不只是防止首先產生的頭? –

+1

也可以使用'app.set'('x-powered-by',false);' – tfmontague

+0

這隻會暫時刪除一次設置的自定義標題,如果我在自己的代碼中註釋掉這行代碼,自定義標題會重新出現,沒有刪除...我需要刪除它!我也嘗試過'res.removeHeader(「custom1」);'但沒有工作... – neoDev

2

中間件片段來自:Can't get rid of header X-Powered-By:Express

function customHeaders(req, res, next){ 
    // Switch off the default 'X-Powered-By: Express' header 
    app.disable('x-powered-by'); 

    // OR set your own header here 
    res.setHeader('X-Powered-By', 'Awesome App v0.0.1'); 

    // .. other headers here 

    next(); 
} 

app.use(customHeaders); 

// ... now your code goes here