Anleitung

OpenStreetMap-Kacheln: «Access blocked» und «Referer is required»

Warum die Kartenkacheln von tile.openstreetmap.org statt der Karte «Access blocked» zeigen, welche Web-Frameworks den Header Referer standardmässig entfernen, und wie Sie das im Server, in Leaflet, OpenLayers und MapLibre beheben oder zu einem anderen Kacheldienst wechseln.

Zeigte die gesperrte Karte nur, wo Ihr Geschäft ist, schreibt Ihnen der Kartengenerator eine neue auf unseren Kartenkacheln, für WordPress, Wix und Squarespace.

Eine Karte für Ihre Website erstellen

Was Sie sehen

Einige oder alle Kacheln der Karte zeigen statt Strassen ein gelb-schwarz gestreiftes Bild:

403
Access blocked
Referer is required by tile usage policy of OpenStreetMap's volunteer-run servers: osm.wiki/Blocked

Andere Sperren sagen «App is not following the tile usage policy of OpenStreetMap's volunteer-run servers» oder erwähnen eine fehlende Quellenangabe. Die 403 ist Teil des Bildes. Der HTTP-Status der Kachel selbst kann 200 sein; im Netzwerk-Tab des Browsers erscheint also womöglich gar kein Fehler. Schauen Sie sich das Bild an.

Oft sind zuerst nur einige Kacheln gesperrt und der Rest lädt, die Karte wirkt also lückenhaft. Seit Frühling 2026 erhalten viele Websites und Werkzeuge, die diese Kacheln jahrelang gezeigt hatten, gesperrte Kacheln, darunter Bildexporte von Plotly, Lizmap, Datasette und Plugins mehrerer Content-Management-Systeme.

Warum die Kacheln gesperrt werden

Die Kachelserver von OpenStreetMap werden von Freiwilligen betrieben, vor allem für die Karte auf openstreetmap.org und zum Bearbeiten. Andere Websites dürfen sie nach der Nutzungsrichtlinie für Kacheln verwenden. Unter anderem steht dort:

  • Browser müssen einen gültigen Header Referer senden. Eine Website darf keine Referrer-Policy setzen, die ihn verhindert.
  • Apps ausserhalb eines Browsers müssen einen eigenen User-Agent mit dem Namen der App senden.
  • Kacheln müssen so lange zwischengespeichert werden, wie die Header des Servers sagen, mindestens aber 7 Tage, und Anfragen dürfen kein Cache-Control: no-cache senden.
  • Die Quellenangabe von OpenStreetMap muss auf der Karte sichtbar sein.
  • Kein Massen-Download und keine Offline-Nutzung: nur Kacheln, die sich eine Person ansieht.

Eine Anfrage, die eine Regel verletzt, erhält das Sperrbild. Es gibt keine Garantie für den Dienst, und die Richtlinie sagt, dass vor allem kommerzielle Dienste damit rechnen müssen, dass der Zugang jederzeit entzogen werden kann.

Die Ursache finden

  1. Öffnen Sie die Entwicklerwerkzeuge des Browsers, Tab Netzwerk, und laden Sie neu. Klicken Sie auf eine Anfrage an tile.openstreetmap.org.
  2. Suchen Sie unter den Request-Headern nach Referer. Fehlt er, haben ihn die Seite oder der Browser entfernt; lesen Sie unten weiter.
  3. Prüfen Sie, welche Policy die Seite sendet:
curl -sI https://www.example.com/ | grep -i referrer-policy
curl -s  https://www.example.com/ | grep -i 'name="referrer"'

Die Werte no-referrer und same-origin senden anderen Websites keinen Referer und verursachen deshalb die Sperre. Diese Werte funktionieren: strict-origin-when-cross-origin (der Standard der Browser), origin, origin-when-cross-origin, strict-origin und no-referrer-when-downgrade.

Die Policy der Website korrigieren

Die meisten Sperren kommen von einer Sicherheitseinstellung, die harmlos aussieht. Zwei verbreitete Frameworks senden standardmässig eine Policy ohne Referer:

WoStandardLösung
Express mit Helmetno-referrer (Helmet 8.3)app.use(helmet({ referrerPolicy: { policy: "strict-origin-when-cross-origin" } }))
Django mit SecurityMiddlewaresame-origin (Django 6.1)SECURE_REFERRER_POLICY = "strict-origin-when-cross-origin" in settings.py
nginxkeiner, ausser gesetztadd_header Referrer-Policy strict-origin-when-cross-origin always;
Apachekeiner, ausser gesetztHeader always set Referrer-Policy "strict-origin-when-cross-origin"
Caddykeiner, ausser gesetztheader Referrer-Policy strict-origin-when-cross-origin
HTML–<meta name="referrer" content="no-referrer"> entfernen oder content="strict-origin-when-cross-origin" setzen

Sicherheits-Plugins von WordPress und anderen Systemen, Hosting-Panels und CDNs haben oft ebenfalls eine Einstellung für die Referrer-Policy. Suchen Sie in den Antwort-Headern danach, wenn Sie selbst keine gesetzt haben. Die Policy strict-origin-when-cross-origin sendet anderen Websites nur die Adresse Ihrer Website, ohne den Pfad der Seite; sie verrät also wenig.

Nur für die Karte korrigieren

Soll die strenge Policy der Website bleiben, setzen Sie eine Policy nur für die Kachel-Anfragen. Sie hat Vorrang vor der Policy der Seite. Getestet in Chromium mit einer Seite, die Referrer-Policy: no-referrer sendet:

// Leaflet 1.8 und neuer
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
  maxZoom: 19,
  referrerPolicy: "strict-origin-when-cross-origin",
  attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

Leaflet 1.9.4 ist noch immer die aktuelle Version und sendet keine eigene Policy, dort braucht es also die Option. Versionen vor 1.8 haben sie nicht; aktualisieren Sie Leaflet, oder ändern Sie die Policy der Website.

Lokale Dateien, Notebooks und Apps

  • Eine als Datei geöffnete Seite (file:///…) hat keine Adresse, die sie als Referer senden könnte. Das Wiki von OpenStreetMap schlägt einen Header X-Requested-With mit dem Namen Ihrer App vor (in Leaflet mit einem Plugin wie leaflet-header, in MapLibre in transformRequest mit headers), oder die Seite von einem lokalen Webserver auszuliefern.
  • Desktop- und Handy-Apps, Skripte und Headless-Browser (der Bildexport von Plotly über Kaleido ist einer) müssen sich ausweisen: ein User-Agent mit dem Namen der App und einem Kontakt, oder die Header oben. Aktualisieren Sie zuerst die Bibliothek; Plotly zum Beispiel hat seinen Bildexport korrigiert.
  • Wer ein Datenschutz-Add-on oder ein Antivirenprogramm hat, das den Referer entfernt, sieht auch auf einer korrekten Website gesperrte Kacheln. Dort hilft eine Ausnahme für tile.openstreetmap.org; in Firefox muss network.http.sendRefererHeader auf 2 stehen. Von der Website aus können Sie das nicht beheben, ein Grund mehr für Websites mit vielen Besuchen, einen eigenen Kacheldienst zu verwenden.

Sperren, die kein Header behebt

Vorausladen von Gebieten, Offline-Karten, ein umgangener Cache und eine fehlende Quellenangabe werden ebenfalls gesperrt, und daran ändert kein Header etwas. Eine solche Sperre endet, sobald die App der Richtlinie folgt. Braucht die App Offline-Karten, Massen-Downloads oder eine intensive Nutzung, bittet die Richtlinie darum, eigene Kacheln zu betreiben oder einen anderen Dienst auf Grundlage der OpenStreetMap-Daten zu verwenden.

Zu einem anderen Kacheldienst wechseln

Für eine Website oder App mit regelmässigem Verkehr ist ein Kacheldienst mit eigenem Schlüssel und Kontingent die nachhaltige Wahl; die OpenStreetMap-Daten und ihre Quellenangabe bleiben dieselben. Mit Leaflet brauchen die Vektorkacheln von overpass.ch das Plugin maplibre-gl-leaflet, das die Vektorkarte in Leaflet zeichnet. Ihre Marker, Popups und Layer bleiben, wie sie sind:

<!-- in der Seite: maplibre-gl.css, maplibre-gl.js 5.x (UMD) und leaflet-maplibre-gl.js,
     siehe den Code auf /maps -->
// vorher
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { maxZoom: 19 }).addTo(map);

// nachher
L.maplibreGL({
  style: "https://api.overpass.ch/v1/IHR_SCHLÜSSEL/maps/styles/light.json"
}).addTo(map);

Der Stil zeigt die Quellenangabe von OpenStreetMap von selbst. Erstellen Sie einen Schlüssel vom Typ «Nur Karten», und beschränken Sie ihn auf Ihre Website, damit eine Kopie davon anderswo nutzlos ist. Der vollständige Code für Leaflet, OpenLayers und MapLibre steht auf der Seite Kartenkacheln.

Kartenkacheln von overpass.ch

Die ganze Welt aus OpenStreetMap-Daten in neun Stilen, mit Beschriftung in 41 Sprachen und 3D-Gelände, jede Woche aktualisiert. 100'000 Kacheln im Monat sind kostenlos, ohne Kreditkarte. Die Stile tragen die Quellenangabe von OpenStreetMap, und die Kacheln kommen mit Cache-Headern, die Browser befolgen.