Erweiterte Header für Express.js konfigurieren

Schritt-für-Schritt: Origin-Agent-Cluster via Middleware, HTTPS-Redirect mit x-forwarded-proto-Check, WWW-Normalisierung und X-Powered-By entfernen.

Express.js · Schritt für Schritt

Erweiterte Header in Express.js

Express.js setzt HTTP-Header über Middleware-Funktionen. Alle Middlewares werden mit app.use() global registriert und in Registrierungsreihenfolge ausgeführt. Die Reihenfolge ist bei HTTPS- und WWW-Redirects entscheidend — Redirect-Middlewares müssen als erste registriert werden.

Erweiterte Header bringen zusammen 4 von 166 Punkten im Wolf-Agents Web Security Check. Diese Anleitung zeigt drei Schritte: Origin-Agent-Cluster via Middleware, HTTPS-Redirect mit korrekter Proxy-Erkennung und WWW-Normalisierung mit Hostname-Check.

1 Schritt 1 von 3

Origin-Agent-Cluster via Middleware setzen

In Express.js werden HTTP-Header mit res.setHeader() gesetzt. Eine globale Middleware mit app.use() sorgt dafür, dass der Header bei jeder Antwort gesetzt wird. Gleichzeitig deaktivieren Sie X-Powered-By mit app.disable("x-powered-by").

app.js / server.js Middleware
// app.js oder server.js
const express = require('express');
const app = express();

// X-Powered-By Header entfernen (Express default)
app.disable('x-powered-by');

// Trust Proxy — nötig wenn hinter Nginx/Load Balancer
app.set('trust proxy', 1);

// Origin-Agent-Cluster Middleware — vor allen Routen registrieren
app.use((req, res, next) => {
  res.setHeader('Origin-Agent-Cluster', '?1');
  next();
});
Helmet.js als Alternative

Das Paket helmet setzt viele Security-Header auf einmal: app.use(helmet()). Neuere Helmet-Versionen (ab 6.x) setzen Origin-Agent-Cluster standardmäßig. Prüfen Sie die Defaults — manche Helmet-Header benötigen Anpassung für Ihre Anwendung.

2 Schritt 2 von 3

HTTPS-Redirect konfigurieren

Express läuft in Produktionsumgebungen meistens hinter einem Reverse Proxy (Nginx, Load Balancer). Dieser terminiert HTTPS — Express sieht nur HTTP-Verbindungen. Die Middleware prüft daher sowohl req.secure als auch den X-Forwarded-Proto-Header.

app.js — HTTPS Middleware 301 Redirect
// HTTPS-Redirect Middleware
// Prüft req.secure UND x-forwarded-proto (für Reverse-Proxy-Setups)
const enforceHttps = (req, res, next) => {
  const isSecure =
    req.secure ||
    req.headers['x-forwarded-proto'] === 'https';

  if (!isSecure && process.env.NODE_ENV === 'production') {
    // 301: Permanent — Browser cached diesen Redirect
    return res.redirect(301, `https://${req.headers.host}${req.url}`);
  }
  next();
};

// Als erstes registrieren (vor allen anderen Middlewares)
app.use(enforceHttps);
Den HTTPS-Redirect auf NODE_ENV === 'production' begrenzen — lokal mit HTTP zu entwickeln ist praktischer. In der Produktion immer erzwingen.
3 Schritt 3 von 3

WWW-Normalisierung und veraltete Header entfernen

Der Hostname in req.hostname enthält die Domain ohne Port. Mit startsWith("www.") prüfen und mit slice(4) das www-Präfix entfernen. Der Redirect leitet auf die HTTPS-non-www-URL weiter.

app.js — WWW-Middleware WWW → non-WWW
// WWW-Normalisierung Middleware
const removeWww = (req, res, next) => {
  const host = req.hostname;
  if (host.startsWith('www.')) {
    const newHost = host.slice(4); // www. entfernen
    return res.redirect(301, `https://${newHost}${req.url}`);
  }
  next();
};

app.use(removeWww);

// Vollständige Middleware-Reihenfolge:
// 1. enforceHttps  → HTTP → HTTPS
// 2. removeWww     → www → non-www
// 3. Security-Header Middleware (Origin-Agent-Cluster etc.)
// 4. Weitere App-Middlewares (body-parser, session, etc.)
// 5. Routes
app.js — vollständige Konfiguration Aufräumen
// Vollständiges Security-Header Setup für Express.js (Production)
const express = require('express');
const app = express();

app.disable('x-powered-by');
app.set('trust proxy', 1);

// Alle Security-Header in einer Middleware
app.use((req, res, next) => {
  res.setHeader('Origin-Agent-Cluster', '?1');
  // X-XSS-Protection NICHT setzen — aus Browsern entfernt (2023)
  next();
});

// Konfiguration testen:
// curl -sI http://localhost:3000 | grep -iE "(origin-agent|x-powered|powered)"

Wie steht Ihre Domain bei Erweiterte Header?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Wie setze ich Origin-Agent-Cluster in Express.js?

Mit einer globalen Middleware: app.use((req, res, next) => { res.setHeader("Origin-Agent-Cluster", "?1"); next(); }); Diese Middleware muss vor den Route-Definitionen registriert werden. Alternativ können Sie den Header über das Helmet-Paket setzen, das in neueren Versionen Origin-Agent-Cluster unterstützt.

Warum prüft die HTTPS-Middleware sowohl req.secure als auch x-forwarded-proto?

req.secure ist true, wenn Express direkt über HTTPS erreichbar ist. Hinter einem Reverse Proxy (Nginx, Load Balancer) terminiert HTTPS am Proxy — Express sieht dann HTTP-Anfragen mit dem Header X-Forwarded-Proto: https. Ohne diese Kombination würde die Middleware alle Anfragen fälschlicherweise als unsicher einordnen.

Sollte ich trust proxy in Express aktivieren?

Ja, wenn Express hinter einem vertrauenswürdigen Reverse Proxy läuft: app.set("trust proxy", 1). Damit wertet Express X-Forwarded-* Header aus, was req.secure und req.hostname korrekt macht. Setzen Sie nur die Anzahl der Proxy-Ebenen, denen Sie vertrauen — nicht einfach true für alle Proxies.

Wie entferne ich X-Powered-By in Express?

Mit app.disable("x-powered-by") deaktivieren Sie den X-Powered-By: Express Header global. Alternativ: app.set("x-powered-by", false). Express sendet diesen Header standardmäßig — er verrät die verwendete Framework-Version und sollte in Produktionsumgebungen immer entfernt werden.

Ist Helmet.js eine Alternative zur manuellen Middleware?

Ja. helmet() setzt viele Security-Header auf einmal. Für Origin-Agent-Cluster: helmet({ originAgentCluster: true }). Helmet.js ist eine gute Grundlage, aber prüfen Sie die Standardwerte — nicht alle Defaults sind für jede Anwendung geeignet. Die manuelle Middleware gibt mehr Kontrolle.

Wie kombiniere ich den WWW-Redirect mit dem HTTPS-Redirect in Express?

Registrieren Sie beide Middlewares in der richtigen Reihenfolge: Zuerst HTTPS-Redirect, dann WWW-Redirect. Express führt Middlewares in Registrierungsreihenfolge aus. Dadurch wird eine HTTP-www-Anfrage zuerst auf HTTPS geleitet, dann das www entfernt — maximal zwei Redirects, die Browser nach dem ersten Besuch cachen.