Impossible de se débarrasser de l'en-tête X-Powered-By: Express

J'exécute un serveur sur nodejs avec express. Je n'arrive pas à me débarrasser de l'en-tête:

X-Powered-By:Express

Je me demandais s'il y avait un moyen de se débarrasser de cet en-tête ou dois-je vivre avec?

157
demandé sur Seyed Ali Ghaffari 2011-05-03 12:53:37

9 réponses

Dans Express > = 3.0. 0rc5:

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

Voici un middleware simple qui supprime l'en-tête dans les versions antérieures D'Express:

app.use(function (req, res, next) {
  res.removeHeader("x-powered-by");
  next();
});
239
répondu Giacomo 2013-01-04 07:53:41

Juste pour reprendre la réponse de rjack, vous pouvez également (éventuellement) simplement changer (définir) l'en-tête X-powered-by en quelque chose de beaucoup plus cool / personnalisé comme ceci:

app.use(function (req, res, next) {
  res.header("X-powered-by", "Blood, sweat, and tears")
  next()
})
48
répondu Christopher Scott 2012-03-23 13:46:03

Depuis Express v3.0.0rc5, la prise en charge de la désactivation de l'en-tête X-Powered-By est intégrée dans:

var express = require('express');

var app = express();
app.disable('x-powered-by');
46
répondu hallmark 2012-09-18 20:39:34

À partir de la source ( http://expressjs.com/en/api.html#app.set ). Dans Express 4.X il suffit de définir l'application en utilisant la ligne ci-dessous;

app.set('x-powered-by', false) // hide x-powered-by header!
15
répondu efkan 2017-06-06 04:35:32

Voici un middleware pratique que vous pouvez déposer pour échanger 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

La définition de X-Powered by dans ce cas remplacerait la valeur par défaut 'Express', vous n'avez donc pas besoin de désactiver et de définir une nouvelle valeur.

9
répondu papercowboy 2012-10-28 20:08:30

Peut-être que cela pourrait être évident pour les utilisateurs Express plus expérimentés, mais seulement cela a fonctionné pour moi:

app.configure(function() {
    app.use(function (req, res, next) {
        res.removeHeader("X-Powered-By");
        next();
    });
});
3
répondu pongi 2012-04-02 09:17:41

Lecture du code https://github.com/visionmedia/express/blob/master/lib/http.js#L72 me fait penser que vous devrez vivre avec car cela ne semble pas conditionnel.

Si vous avez une interface Nginx / apache, vous pouvez toujours supprimer l'en-tête avec elle (avec mod_headers pour apache et headers-plus pour nginx)

1
répondu hellvinz 2011-05-03 09:34:31

Pour se cacher, X-Powered By vous pouvez utiliser Node .Bibliothèque js casque.

Le Lien Pour que est casque

var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
1
répondu arjun kori 2016-11-01 13:42:54

RemoveHeader ne fonctionnera que dans le middleware de route, exemple coffeescript

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

app.get '/posts', fix_headers, (req, res, next) ->
  ...
0
répondu Dejan Ranisavljevic 2011-05-20 08:56:06