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 erstellenWas 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
Referersenden. Eine Website darf keineReferrer-Policysetzen, 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-cachesenden. - 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
- Öffnen Sie die Entwicklerwerkzeuge des Browsers, Tab Netzwerk, und laden Sie neu. Klicken Sie auf eine Anfrage an
tile.openstreetmap.org. - Suchen Sie unter den Request-Headern nach
Referer. Fehlt er, haben ihn die Seite oder der Browser entfernt; lesen Sie unten weiter. - 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:
| Wo | Standard | Lösung |
|---|---|---|
| Express mit Helmet | no-referrer (Helmet 8.3) | app.use(helmet({ referrerPolicy: { policy: "strict-origin-when-cross-origin" } })) |
| Django mit SecurityMiddleware | same-origin (Django 6.1) | SECURE_REFERRER_POLICY = "strict-origin-when-cross-origin" in settings.py |
| nginx | keiner, ausser gesetzt | add_header Referrer-Policy strict-origin-when-cross-origin always; |
| Apache | keiner, ausser gesetzt | Header always set Referrer-Policy "strict-origin-when-cross-origin" |
| Caddy | keiner, ausser gesetzt | header 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: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
// ol/source/OSM sendet standardmässig origin-when-cross-origin (OpenLayers 10.11);
// bei ol/source/XYZ setzen Sie es selbst:
new TileLayer({
source: new XYZ({
url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
referrerPolicy: "strict-origin-when-cross-origin",
attributions: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
})
});
const map = new maplibregl.Map({
container: "map",
style: myStyle, // mit einer Raster-Quelle für tile.openstreetmap.org
transformRequest: (url) => url.startsWith("https://tile.openstreetmap.org/")
? { url, referrerPolicy: "strict-origin-when-cross-origin" }
: { url }
});
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 HeaderX-Requested-Withmit dem Namen Ihrer App vor (in Leaflet mit einem Plugin wie leaflet-header, in MapLibre intransformRequestmitheaders), 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 mussnetwork.http.sendRefererHeaderauf 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.