2012-05-23 35 views
42

Quiero eliminar X-Powered-By para la seguridad, ahorrar ancho de banda en ExpressJS (node.js). ¿cómo hacerlo? podría ser un filtro (app.use)?cómo eliminar X-Powered-By en ExpressJS

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

Respuesta

56

Hacer un middleware de este modo:

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

Ver más información sobre cómo eliminar un encabezado:

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

Actualización:

yo no sabía en ese momento que hay una mejor forma de hacerlo (como muchos sugirieron, los siguientes):

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

Esta no es la respuesta deseada/perfecta/correcta. Ver el que tiene más votos ascendentes. ¡Aclamaciones! – ptz0n

+1

Es cierto, actualicé mi respuesta para reflejar eso. – alessioalex

+0

Acabo de probar 'app.disable ('custom1');' Y funcionó bien (eliminó el encabezado de la respuesta del servidor). Pero luego comenté 'app.disable ('custom1');' y el encabezado aparece nuevamente ... ¿Es esto normal? Ya no tengo 'res.header (" custom1 "," test ");' en mi código porque ya no quiero ese encabezado, pero aún aparece ... – neoDev

124

No retire eso; pedir a expresar no para generarla en el primer lugar:

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

Vaya a su app.js y justo después:

var app = express(); 

Añadir:

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

IMO, esta debería ser la respuesta: el middleware es un golpe de rendimiento en cada solicitud, ¿por qué no evitar que el encabezado se genere en primer lugar? –

+1

También se podría usar 'app.set ('x-powered-by', false);' – tfmontague

+0

Esto solo elimina temporalmente los encabezados personalizados una vez establecido, si hago un comentario de esta línea en mi código, reaparece el encabezado personalizado, por lo que es no eliminado ... ¡y necesito eliminarlo! También probé 'res.removeHeader (" custom1 ");' pero no funciona ... – neoDev

2

Middleware fragmento de: 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 
Cuestiones relacionadas