Не удается избавиться от заголовка X-Powered-By: Express - PullRequest
163 голосов
/ 03 мая 2011

Я использую сервер на nodejs с экспрессом.Кажется, я не могу избавиться от заголовка:

X-Powered-By:Express

Мне было интересно, есть ли способ избавиться от этого заголовка или я должен жить с ним?

Ответы [ 9 ]

242 голосов
/ 03 мая 2011

In Express> = 3.0.0rc5:

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

Вот простое промежуточное ПО, которое удаляет заголовок в более ранних версиях Express:

app.use(function (req, res, next) {
  res.removeHeader("x-powered-by");
  next();
});
51 голосов
/ 23 марта 2012

Просто чтобы прокрутить ответ rjack, вы также можете (необязательно) просто изменить (установить) заголовок X-powered-by на что-то более холодное / нестандартное, например:

app.use(function (req, res, next) {
  res.header("X-powered-by", "Blood, sweat, and tears")
  next()
})
48 голосов
/ 19 сентября 2012

Начиная с Express v3.0.0rc5, поддержка отключения заголовка X-Powered-By встроена:

var express = require('express');

var app = express();
app.disable('x-powered-by');
18 голосов
/ 13 мая 2015

Из источника (http://expressjs.com/en/api.html#app.set). В Express 4.X просто установите приложение, используя строку ниже;

app.set('x-powered-by', false) // hide x-powered-by header!
10 голосов
/ 29 октября 2012

Вот удобное промежуточное ПО, которое вы можете вставить, чтобы поменять X-Powered-By:

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

Настройка X-Powered by в этом случае переопределит «Экспресс» по умолчанию, поэтому вам не нужно одновременно отключать И устанавливать новое значение.

3 голосов
/ 02 апреля 2012

Может быть, это может быть очевидно для более опытных пользователей Express, но у меня сработало только это:

app.configure(function() {
    app.use(function (req, res, next) {
        res.removeHeader("X-Powered-By");
        next();
    });
});
1 голос
/ 19 ноября 2015

Для сокрытия, X-Powered By вы можете использовать Node .js Library шлем .

Ссылка для этого шлем

var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
1 голос
/ 03 мая 2011

Чтение кода https://github.com/visionmedia/express/blob/master/lib/http.js#L72 заставляет меня думать, что вам придется с этим смириться, так как он не выглядит условным.

Если у вас есть интерфейс nginx / apache, вы все равно можетеудалите с ним заголовок (с mod_headers для apache и headers-more для nginx)

0 голосов
/ 20 мая 2011

removeHeader будет работать только в промежуточном программном обеспечении маршрута, пример coffeescript

fix_headers =  (req, res, next) ->
    res.removeHeader 'X-Powered-By'
    next()

app.get '/posts', fix_headers, (req, res, next) ->
  ...
...