Resource Proxying
Wenn Ihre Website externe Ressourcen wie Schriftarten, CSS-Bibliotheken oder JavaScript-Dateien von anderen Servern lädt, erfährt dieser externe Server normalerweise die IP-Adresse jedes Besuchers. CrispyCMS löst dieses Datenschutzproblem automatisch: Alle externen Ressourcen, die über die Twig-Funktion includeResource() eingebunden werden, leitet CrispyCMS unsichtbar über den eigenen Server weiter. Besucher-IPs bleiben dabei verborgen.
Was passiert im Hintergrund?
Sobald includeResource() eine externe URL (also eine Adresse, die mit http:// oder https:// beginnt) enthält, springt der Proxy automatisch ein — ohne dass Sie etwas konfigurieren müssen:
- Der Browser des Besuchers fordert die Ressource bei CrispyCMS an
- CrispyCMS lädt die Datei im Hintergrund vom externen Server
- Die Datei wird für 5 Minuten zwischengespeichert
- Bei späteren Aufrufen liefert CrispyCMS die gespeicherte Version sofort aus
Für den Besucher macht das keinen Unterschied — die Seite lädt genauso schnell, oft sogar schneller. Für den Datenschutz bedeutet es: Der externe Anbieter sieht nie, wer Ihre Website besucht.
Lokale vs. externe Ressourcen
Der Proxy greift nur bei externen URLs ein. Lokale Dateien werden direkt ausgeliefert:
| Ressource | Beispiel | Proxy aktiv? |
|---|---|---|
| Lokale Datei | css/styles.css | ❌ |
| Relativer Pfad | ../assets/script.js | ❌ |
| Externe HTTP-URL | http://example.com/style.css | ✅ |
| Externe HTTPS-URL | https://cdn.jsdelivr.net/bootstrap.min.css | ✅ |
Verwendung in Templates
Die Einbindung ist identisch mit normalen lokalen Ressourcen — nur die URL ist extern:
{# Lokale Ressourcen — kein Proxy #}
<link href='{{ includeResource("css/styles.css") }}' rel='stylesheet'>
<script src='{{ includeResource("js/main.js") }}'></script>
{# Externe Ressourcen — automatisch über Proxy #}
<link href='{{ includeResource("https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css") }}' rel='stylesheet'>
<script src='{{ includeResource("https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js") }}'></script>
Sicherheit
Das Proxy-System enthält mehrere Schutzmaßnahmen, die verhindern, dass es missbräuchlich verwendet werden kann:
Private Netzwerke sind blockiert. Anfragen an interne IP-Adressen (z.B. 192.168.x.x, 10.x.x.x oder 127.0.0.1) werden abgelehnt. Damit wird verhindert, dass externe Templates auf Ihre internen Server zugreifen.
Weiterleitungen werden nicht verfolgt. Wenn eine externe URL auf eine andere URL weiterleitet (HTTP 301/302), bricht der Proxy ab. Verwenden Sie immer die endgültige, direkte URL der Ressource.
Nur HTTP und HTTPS. Andere Protokolle wie ftp:// oder file:// sind nicht erlaubt.
HTML-Seiten werden blockiert. Ressourcen, die als Webseite (HTML) zurückgegeben werden, werden nicht weitergeleitet. Der Proxy ist für statische Dateien (CSS, JS, Schriftarten, Bilder) gedacht.
Wofür eignet sich der Proxy?
Gut geeignet:
- CSS-Frameworks von CDNs (Bootstrap, Tailwind)
- JavaScript-Bibliotheken (jQuery, Alpine.js)
- Web-Schriftarten (Google Fonts, andere Anbieter)
- Icons und Bilder von externen Quellen
Nicht geeignet:
- Dynamische APIs, die sich häufig ändern
- Sehr große Dateien (über 5 MB)
- Ressourcen mit sehr kurzer Lebensdauer oder Echtzeit-Daten
Häufige Probleme
Die externe Ressource wird nicht geladen. Prüfen Sie, ob die URL direkt erreichbar ist (kein Redirect), ob sie als HTML ausgeliefert wird (dann blockiert), und ob sie auf eine öffentliche IP zeigt (keine internen Adressen).
Die Seite lädt eine veraltete Version der Ressource. Der Cache läuft nach 5 Minuten automatisch ab. Sie können nichts selbst zurücksetzen — warten Sie kurz und laden Sie die Seite neu.
Die Seite lädt langsamer als erwartet. Reduzieren Sie die Anzahl externer Ressourcen, oder erwägen Sie, häufig genutzte Bibliotheken direkt in Ihrem Template-Verzeichnis zu speichern.