Der Header X-Powered-By:Express kann nicht entfernt werden

Lesezeit: 3 Minuten

Benutzer-Avatar
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?

  • @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

Benutzer-Avatar
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');

Benutzer-Avatar
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.

Benutzer-Avatar
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();

Benutzer-Avatar
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

1289060cookie-checkDer Header X-Powered-By:Express kann nicht entfernt werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy