Referrer-Policy für Next.js konfigurieren

Konfigurationsanleitung: Referrer-Policy über next.config.js headers() global setzen, mit Middleware für dynamische Policies und pro-Element-Überschreiben in JSX/TSX.

Next.js · Konfigurationsanleitung

Referrer-Policy in Next.js

Next.js bietet eine native Möglichkeit zur Header-Konfiguration über die headers()-Funktion in next.config.js. Für die meisten Anwendungsfälle reicht diese globale Konfiguration aus. Für dynamische, route-abhängige Policies bietet die Middleware maximale Flexibilität.

Referrer-Policy bringt 10 von 166 Punkten im Wolf-Agents Web Security Check. Beide Ansätze funktionieren für App Router und Pages Router. Bei statischem Export (output: 'export') greift next.config.js headers() nicht — dort ist ein vorgelagerter Webserver (Nginx, Cloudflare) oder das HTML-Meta-Tag notwendig.

1 Schritt 1 von 4

next.config.js headers()

Die headers()-Funktion in next.config.js (oder next.config.ts) ist der empfohlene Weg für statische, globale HTTP-Header in Next.js. Das Muster '/(.*)' matcht alle Routen — inklusive API-Routes. Der Header wird beim Serving aller Seiten gesetzt.

next.config.js headers()
// next.config.js — Globale Referrer-Policy
module.exports = {
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: [
          {
            key: 'Referrer-Policy',
            value: 'strict-origin-when-cross-origin',
          },
        ],
      },
    ];
  },
};
next.config.js — Alle Security-Header Empfohlen
// next.config.js — Alle Security-Header
const securityHeaders = [
  { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
  { key: 'X-Content-Type-Options', value: 'nosniff' },
  { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
  { key: 'Permissions-Policy', value: 'camera=(), microphone=()' },
];

module.exports = {
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: securityHeaders,
      },
    ];
  },
};
next.config.js erfordert Build-Neustart

Änderungen an next.config.js werden erst nach einem Neustart des Development-Servers (npm run dev) oder einem neuen Build (npm run build) wirksam. Im Gegensatz zur Middleware erfordert next.config.js keine Runtime-Verarbeitung.

2 Schritt 2 von 4

Middleware-Alternative

Die Next.js Middleware läuft auf der Edge Runtime vor jedem Request und ermöglicht dynamische, route-abhängige Header. Legen Sie die Datei middleware.ts im Projekt-Root (App Router) oder im src/-Verzeichnis an.

middleware.ts (Projekt-Root) Edge Runtime
// middleware.ts — Dynamische Referrer-Policy per Route
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
  const response = NextResponse.next();

  // Strengere Policy für Admin-Bereich
  if (request.nextUrl.pathname.startsWith('/admin')) {
    response.headers.set('Referrer-Policy', 'no-referrer');
  } else {
    response.headers.set(
      'Referrer-Policy',
      'strict-origin-when-cross-origin'
    );
  }

  return response;
}

next.config.js vs. Middleware

Eigenschaft next.config.js Middleware
Ausführung Build-Zeit Edge (pro Request)
Dynamische Header Nein Ja
Performance-Overhead Keiner Minimal (Edge)
Empfehlung Standard-Fall Komplexe Policies
3 Schritt 3 von 4

Pro-Element überschreiben

Für einzelne externe Links, Bilder oder Fetch-Requests können Sie die globale Policy mit dem referrerPolicy-Attribut (JSX) oder dem referrerpolicy-Attribut (HTML) überschreiben. Das ist nützlich, wenn bestimmte externe Ressourcen überhaupt keinen Referrer sehen sollen.

JSX / TSX Pro-Element
// Pro-Element überschreiben — im JSX/TSX
// Externer Partner-Link ohne Referrer
<a
  href="https://partner.de"
  referrerPolicy="no-referrer"
  target="_blank"
  rel="noopener noreferrer"
>
  Partner-Website
</a>

// Bild ohne Referrer laden
<img
  src="https://cdn.example.com/bild.jpg"
  referrerPolicy="no-referrer"
  alt="Beispielbild"
/>
Element-Attribut überschreibt Server-Header

Das Element-Level-Attribut (referrerPolicy) hat die höchste Priorität und überschreibt sowohl den HTTP-Header als auch das Meta-Tag. Nutzen Sie es für einzelne Elemente, die eine abweichende Policy benötigen — z.B. externe Partner-Links ohne Referrer.

4 Schritt 4 von 4

Konfiguration verifizieren

Bauen Sie die Anwendung neu und starten Sie den Server, bevor Sie den Header prüfen. Bei Vercel-Deployments überprüfen Sie den Header nach dem Deployment im Production-Environment — nicht nur lokal.

Terminal Verifizierung
# 1. Next.js-Server lokal testen
npm run build && npm start

# 2. Header per curl prüfen
curl -sI http://localhost:3000 | grep -i referrer-policy

# Erwartete Ausgabe:
# Referrer-Policy: strict-origin-when-cross-origin

# 3. API-Route prüfen
curl -sI http://localhost:3000/api/health | grep -i referrer-policy
Mit dem Wolf-Agents Web Security Check alle Security-Header Ihrer Next.js-Anwendung automatisch prüfen lassen — auch nach Deployments auf Vercel oder eigenem Server.

Wie steht Ihre Domain bei Referrer-Policy?

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

Häufig gestellte Fragen

Wie setze ich die Referrer-Policy in Next.js?

Die einfachste Methode: Fügen Sie in next.config.js eine headers()-Funktion hinzu, die für alle Routen (Muster "/(.*)" ) den Referrer-Policy Header setzt. Alternativ nutzen Sie die Next.js Middleware für dynamische, route-abhängige Policies.

Was ist der Unterschied zwischen next.config.js und Middleware für Header?

next.config.js headers() ist für statische, globale Header optimal — sie werden beim Build-Prozess konfiguriert. Middleware läuft bei jedem Request und erlaubt dynamische Header basierend auf Route, User-Agent, Authentifizierung etc. Für die Referrer-Policy reicht next.config.js in den meisten Fällen.

Gilt die Konfiguration für alle Routen inklusive API-Routes?

Ja. Das Muster "/(.*)" matched alle Routen inklusive API-Routes (/api/*). Wenn Sie für API-Routes eine andere Policy wünschen, definieren Sie zwei Einträge im headers()-Array: einen für /api/(.*) und einen für den Rest.

Wie setze ich die Referrer-Policy in Next.js App Router vs. Pages Router?

Die next.config.js headers()-Methode funktioniert für beide Router — App Router und Pages Router. Für den App Router gibt es zusätzlich die Option, Header in Route Handlers (app/api/route.ts) über Response-Objekte zu setzen. Die Middleware-Methode funktioniert ebenfalls für beide.

Werden Header auch bei statisch generierten Seiten (SSG) gesetzt?

Bei Next.js auf Vercel und eigenem Node.js-Server: Ja, der Header wird auch bei SSG-Seiten gesetzt, da Next.js die Header beim Serving hinzufügt. Bei reinem Static-Export (next export) funktioniert next.config.js headers() nicht — Sie benötigen dann eine serverseitige Lösung (Nginx/Cloudflare) oder das referrerPolicy-Meta-Tag.

Kann ich das referrerPolicy-Attribut auf einzelnen Next.js Link-Komponenten setzen?

Ja. Das standard HTML referrerpolicy-Attribut funktioniert auf dem nativen <a>-Tag. Die Next.js <Link>-Komponente rendert ein <a>-Tag — Sie können dort referrerPolicy="no-referrer" für spezifische externe Links setzen und damit die globale Policy überschreiben.

Funktioniert die Konfiguration auf Vercel, Netlify und eigenem Server?

next.config.js headers() funktioniert auf Vercel und eigenem Node.js-Server (npm start). Auf Netlify wird es ebenfalls unterstützt. Bei statischem Export oder anderen Hosting-Plattformen kann das Verhalten abweichen — prüfen Sie die Dokumentation Ihres Hosting-Providers.