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?
Dans Express> = 3.0.0rc5:
app.disable('x-powered-by');
Voici un middleware simple qui supprime l'en-tête des versions antérieures d'Express:
app.use(function (req, res, next) {
res.removeHeader("x-powered-by");
next();
});
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()
})
À partir de Express v3.0.0rc5, la prise en charge de la désactivation du fichier X-Powered-By
en-tête est intégré dans:
var express = require('express');
var app = express();
app.disable('x-powered-by');
De la source ( http://expressjs.com/en/api.html#app.set ). Dans Express 4.X, définissez simplement l'application à l'aide de la ligne ci-dessous;
app.set('x-powered-by', false) // hide x-powered-by header!
Voici un middleware pratique que vous pouvez utiliser 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
Définir X-Powered by dans ce cas écraserait le paramètre par défaut 'Express', vous n'avez donc pas besoin de désactiver ET de définir une nouvelle valeur.
Peut-être que cela pourrait être évident pour les utilisateurs plus expérimentés d'Express, mais seulement cela a fonctionné pour moi:
app.configure(function() {
app.use(function (req, res, next) {
res.removeHeader("X-Powered-By");
next();
});
});
Pour masquer, X-Powered By, vous pouvez utiliser le casque Node .js Library ) .
Le lien pour cela est casque
var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
La lecture du code https://github.com/visionmedia/express/blob/master/lib/http.js#L72 me fait penser que vous devrez vivre avec car il ne semble pas être conditionnel.
Si vous avez une interface nginx/Apache, vous pouvez toujours enlever l’en-tête avec elle (avec mod_headers pour Apache et en-têtes-more pour nginx)
removeHeader fonctionnera uniquement dans les middleware de route, exemple de Coffeescript
fix_headers = (req, res, next) ->
res.removeHeader 'X-Powered-By'
next()
app.get '/posts', fix_headers, (req, res, next) ->
...