Ich betreibe einen Server auf nodejs mit Express. Ich bekomme den Header einfach nicht weg:
X-Powered-By:Express
Ich frage mich, ob es eine Möglichkeit gibt, diesen Header loszuwerden, oder muss ich damit leben?
tyronegcarter
Ich betreibe einen Server auf nodejs mit Express. Ich bekomme den Header einfach nicht weg:
X-Powered-By:Express
Ich frage mich, ob es eine Möglichkeit gibt, diesen Header loszuwerden, oder muss ich damit leben?
Giacomo
In Express >= 3.0.0rc5:
app.disable('x-powered-by');
Hier ist eine einfache Middleware, die den Header in früheren Versionen von Express entfernt:
app.use(function (req, res, next) {
res.removeHeader("x-powered-by");
next();
});
Ich musste es vorher platzieren app.use(app.router);
damit es funktioniert.
– Pavel Hlobil
14. Januar 2012 um 3:14 Uhr
Dasselbe wie app.set(‘x-powered-by’, false);
– Harrisunderwork
13. März 2016 um 13:26 Uhr
Hat nicht funktioniert 4.15.2
. @harrisunderwork-Lösung mit app.set()
hat es geschafft.
– Daniel W.
30. März 2017 um 15:29 Uhr
Nur um die Antwort von rjack zu huckepack zu tragen, könnten Sie (optional) auch den X-powered-by-Header auf etwas viel Cooleres/Benutzerdefiniertes wie dieses ändern (einstellen):
app.use(function (req, res, next) {
res.header("X-powered-by", "Blood, sweat, and tears")
next()
})
Ab Express v3.0.0rc5 wird die Deaktivierung von X-Powered-By
Header ist eingebaut:
var express = require('express');
var app = express();
app.disable('x-powered-by');
efkan
Von der Quelle (http://expressjs.com/en/api.html#app.set). In Express 4.X stellen Sie die App einfach mit der Zeile unten ein;
app.set('x-powered-by', false) // hide x-powered-by header!
Hier ist eine praktische Middleware, mit der Sie X-Powered-By austauschen können:
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
Das Festlegen von X-Powered by würde in diesem Fall die Standardeinstellung „Express“ außer Kraft setzen, sodass Sie nicht sowohl deaktivieren als auch einen neuen Wert festlegen müssen.
Jacco Mol
Auch keine der Standardlösungen funktioniert für mich. Nach langem Suchen fand ich heraus, dass wir eine Routendatei verwendet haben, in der eine neue Express-Instanz gestartet wurde, die später mit app.use zur ersten hinzugefügt wurde. Nur für die Routen in dieser neuen Express-Instanz war der X-Powered-By-Header vorhanden.
Vereinfachte Betrachtungsweise des Problems:
const app = express();
app.disable("x-powered-by");
app.get("/ping", (req, res) => res.send("Pong")); // <-- no X-Powered-By header
const moreRoutes = express();
moreRoutes.get("/ping", (req, res) => res.send("Pong")); // <-- X-Powered-By header still present
app.use("/api/v2", moreRoutes);
Die Lösung war einfach, statt einer ganzen Instanz einen neuen express.Router zu erstellen.
const moreRoutes = express.Router();
Akos K
Zum Ausblenden von X-Powered By können Sie die Node .js-Bibliothek verwenden Helm.
Der Link dazu ist Helm
var helmet = require('helmet');
app.use(helmet.hidePoweredBy());
Würden Sie dafür eine ganze Bibliothek einbinden?
– Moha das allmächtige Kamel
19. Juni 2020 um 14:16 Uhr
Ja, wir müssen die Helmbibliothek verwenden. Wenn Sie expressjs fremework verwenden, können Sie die Bibliothek mit diesem Code vermeiden. app.disable(“x-powered-by”);
– arjun kori
21. Juni 2020 um 15:05 Uhr
@alessioalex Diese Frage hat mehr Ansichten (aus welchen Gründen auch immer sie beliebter ist), also machen wir stattdessen ein anderes Duplikat davon.
– Alexei Levenkov
4. Oktober 2014 um 6:29 Uhr