如何在ExpressJS中删除X-Powered-By

Maj*_*eri 101 http http-headers node.js express

我想在ExpressJS(node.js)中删除X-Powered-By for Security,Save Bandwidth.怎么做?它可能是过滤器(app.use)?

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

ahc*_*cox 229

不要删除它; 要求Express不要首先生成它:

/sf/answers/873924971/

转到你的app.js,之后:

var app = express();
Run Code Online (Sandbox Code Playgroud)

加:

app.disable('x-powered-by');
Run Code Online (Sandbox Code Playgroud)

  • IMO,这应该是答案 - 中间件对每个请求都有性能影响,为什么不阻止首先产生标题呢? (14认同)
  • 它对我不起作用。行`app.disable('x-powered-by');` 似乎没有任何影响...... (11认同)
  • 也可以使用`app.set('x-powered-by',false);` (3认同)
  • 错误...它有效...在客户端上将其关闭 (2认同)

ale*_*lex 135

更好的方法是:

app.disable('x-powered-by');
Run Code Online (Sandbox Code Playgroud)

你也可以制作一个中间件来删除任何标题,如下所示:

app.use(function (req, res, next) {
  res.removeHeader("X-Powered-By");
  next();
});
Run Code Online (Sandbox Code Playgroud)

查看有关如何删除标题的更多信息:

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

  • 这不是理想/完美/正确的答案.看到最赞成的一个.干杯! (4认同)

pap*_*boy 5

中间件片段来自:无法摆脱标题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
Run Code Online (Sandbox Code Playgroud)