Fehlerbehebung für 403 Forbidden Errors in Edge Delivery Services Form Submission troubleshooting-403-forbidden-edge-delivery
Beim Senden von Formularen von Edge Delivery Services an die AEM-Veröffentlichungsinstanz tritt möglicherweise der Fehler 403 Verboten auf. Dieser Fehler zeigt an, dass der Server die Verarbeitung der Anfrage ablehnt, normalerweise aufgrund von Sicherheitskonfigurationen. Dieser Artikel hilft Ihnen, die häufigsten Ursachen dieses Problems zu identifizieren und zu beheben.
Problembeschreibung
Beim Senden von Formularen von Edge Delivery Services an die AEM-tritt ein 403 Forbidden'-Fehler auf. Der Fehler wird wie folgt angezeigt:
- HTTP-Status-Code: 403
- Fehlermeldung: „Forbidden“ oder „Access Denied“
- Die Formularübermittlung schlägt fehl, ohne dass das AEM-Übermittlungs-Servlet erreicht wird
Dieses Problem tritt häufig bei Edge Delivery Services-Integrationen auf, bei denen auf Edge-Domains (.aem.live, .aem.page, .hlx.page, .hlx.live) gehostete Formulare versuchen, Daten an AEM-Veröffentlichungsinstanzen zu senden.
- Repository:
https://github.com/adobe/abc - Site 1:
main--abc--adobe.aem.live - Site 2:
main--abc1--adobe.aem.live
Häufige Ursachen und Lösungen
Ein 403-Forbidden-Fehler bei der Übermittlung von Edge Delivery Services-Formularen kann mehrere Ursachen haben. Führen Sie die folgenden Schritte zur Fehlerbehebung in der richtigen Reihenfolge aus:
1. CORS-Probleme (Cross-Origin Resource Sharing)
Symptome:
- Die Browser-Konsole zeigt CORS-bezogene Fehlermeldungen an
- Die Registerkarte Netzwerk zeigt an, dass die Anfrage blockiert wird, bevor sie den Server erreicht
- Fehlermeldungen mit Hinweis auf „Cross-Origin Request Blocked“
Diagnose:
- Browser-Entwickler-Tools öffnen (F12)
- Überprüfen Sie die Registerkarte Konsole auf CORS-Fehlermeldungen.
- Suchen Sie nach Nachrichten wie:
Access to fetch at 'https://publish-xxx.adobeaemcloud.com' from origin 'https://main--repo--owner.aem.live' has been blocked by CORS policy
Lösung:
Konfigurieren Sie CORS-Einstellungen in AEM, um Anfragen von Ihren spezifischen Edge Delivery-Site-Domains zuzulassen:
# Developer Localhost
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(http://localhost(:\d+)?$)#" CORSTrusted=true
# Edge Delivery Sites - Add each site domain individually
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://main--abc--adobe\.aem\.live$)#" CORSTrusted=true
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://main--abc1--adobe\.aem\.live$)#" CORSTrusted=true
# Legacy Franklin domains (if still in use)
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://.*\.hlx\.page$)#" CORSTrusted=true
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://.*\.hlx\.live$)#" CORSTrusted=true
main--abc--adobe.aem.live und main--abc1--adobe.aem.live durch Ihre tatsächlichen Site-Domains. Jede Site, die vom selben Repository gehostet wird, erfordert einen separaten CORS-Konfigurationseintrag.Weitere Informationen zur CORS-Konfiguration finden Sie im CORS-Konfigurationshandbuch.
2. Dispatcher-Regeln
Symptome:
- 403-Fehler ohne CORS-Meldungen in Browser-Konsole
- Anfrage gelangt auf den Server, wird aber von Dispatcher blockiert
- Fehler tritt auf, bevor die AEM-Anwendungsebene erreicht wird
Diagnose:
- Überprüfen Sie, ob die Anfrage-URL mit Dispatcher-Filterregeln übereinstimmt
- Überprüfen Sie die Dispatcher-Konfiguration auf
/filter, die POST-Anfragen blockieren könnten. - Überprüfen Sie, ob der Formularübermittlungsendpunkt in der Dispatcher-Konfiguration zulässig ist
Lösung:
Aktualisieren Sie die Dispatcher-Konfiguration, um Formularübermittlungsanfragen zuzulassen:
- Stellen Sie sicher, dass POST-Anfragen an Formularübermittlungsendpunkte zulässig sind
- Hinzufügen geeigneter Filterregeln für Edge Delivery-Domains
- Stellen Sie sicher, dass der Pfad des Übermittlungs-Servlets nicht blockiert ist
Beispiel für eine Dispatcher-Filterkonfiguration:
/filter {
# Allow POST requests to form submission servlet
/0100 { /type "allow" /method "POST" /url "/content/forms/af/*" }
/0101 { /type "allow" /method "POST" /url "/adobe/forms/af/submit/*" }
/0102 { /type "allow" /method "POST" /url "/content/forms/portal/submit/adaptiveform" }
}
3. Probleme mit Referrer-Filtern
Symptome:
- 403-Fehler ohne CORS-Probleme in der Browser-Konsole
- Anfrage erreicht AEM, wird jedoch vom Sling Referrer-Filter abgelehnt
- Fehler auf der Anwendungsebene von AEM
Diagnose:
Überprüfen Sie die AEM-Fehlerprotokolle auf Nachrichten zur Ablehnung des Referrer-Filters:
-
Suchen Sie nach Einträgen in
aemerror.log, die Folgendes enthalten:- „Referrer-Filter abgelehnt“
- „org.apache.sling.security.impl.ReferrerFilter“
- Meldungen zu Fehlern bei der Referrer-Validierung
Beispiel für einen Protokolleintrag:
[ERROR] org.apache.sling.security.impl.ReferrerFilter Referrer filter rejected request with referrer 'https://main--abc--adobe.aem.live' for POST /content/forms/af/submit
Lösung:
Konfigurieren Sie den Referrer-Filter, um Ihre spezifischen Edge Delivery-Site-Domains zuzulassen:
-
Erstellen oder aktualisieren Sie die OSGi-Konfigurationsdatei:
org.apache.sling.security.impl.ReferrerFilter.cfg.json -
Fügen Sie die folgende Konfiguration mit Ihren spezifischen Site-Domains hinzu:
code language-json { "allow.empty": false, "allow.hosts": [ "main--abc--adobe.aem.live", "main--abc1--adobe.aem.live" ], "allow.hosts.regexp": [ "https://.*\\.aem\\.live:443", "https://.*\\.aem\\.page:443", "https://.*\\.hlx\\.page:443", "https://.*\\.hlx\\.live:443" ], "filter.methods": [ "POST", "PUT", "DELETE", "COPY", "MOVE" ], "exclude.agents.regexp": [ "" ] } -
Bereitstellen der Konfiguration über Cloud Manager
allow.hosts-Array hinzugefügt werden. Die Verwendung von nur Regex-Mustern ist möglicherweise nicht für alle Szenarien ausreichend. Schließen Sie sowohl spezifische Domains als auch Regex-Muster für eine umfassende Abdeckung ein.Diagnoseschritte
Führen Sie die folgenden Schritte aus, um die spezifische Ursache Ihres 403-Fehlers zu identifizieren:
Schritt 1: Browser-Konsole überprüfen
- Browser-Entwickler-Tools öffnen (F12)
- Navigieren Sie zur Registerkarte Konsole .
- Formularübermittlung versuchen
- Suchen nach CORS-bezogenen Fehlermeldungen
Wenn CORS-Fehler vorhanden sind: Befolgen Sie die obige CORS-Lösung.
Wenn keine CORS-Fehler auftreten: Mit Schritt 2 fortfahren.
Schritt 2: Prüfen Sie die Registerkarte „Netzwerk“
- Browser-Entwickler-Tools öffnen (F12)
- Navigieren Sie zur Registerkarte Netzwerk .
- Formularübermittlung versuchen
- Überprüfen der Details zur fehlgeschlagenen Anfrage
- Antwort-Header und -Status anzeigen
Wenn die Anfrage den Server nicht erreicht Wahrscheinlich ein Dispatcher-Problem.
Wenn die Anfrage den Server erreicht, aber fehlschlägt: Wahrscheinlich ein Referrer-Filter-Problem.
Schritt 3: AEM-Protokolle überprüfen
- Zugreifen auf Cloud Manager
- Navigieren Sie zu Umgebungen → Ihrer Umgebung → Protokollen
- Herunterladen oder Anzeigen von
aemerror.log - Suche nach Einträgen zum Zeitpunkt der Formularübermittlung
- Nach Referrer-Filtern oder sicherheitsrelevanten Nachrichten suchen
Prävention und Best Practices
1. Korrekte Konfiguration während der Einrichtung
- Konfigurieren der Einstellungen für CORS, Dispatcher und Referrer-Filter beim ersten Einrichten von Edge Delivery Services
- Für jede neue Site: die spezifische Domain zu allen Zulassungslisten hinzu (CORS, Referrer-Filter)
- Testen von Formularübermittlungen in der Entwicklungsumgebung vor der Live-Schaltung
2. Umgebungsspezifische Konfigurationen
- Verwenden unterschiedlicher Konfigurationen für Entwicklungs-, Staging- und Produktionsumgebungen
- Einschließen von localhost-Domains zum Testen der lokalen Entwicklung
- auf die Zulassungsliste setzen Alle Website-Domains dokumentieren auf die das Repository Zugriff benötigt
3. Überwachung und Protokollierung
- Einrichten der Protokollüberwachung für Zurückweisungen des Referrer-Filters
- Implementieren einer ordnungsgemäßen Fehlerbehandlung im Code für die Formularübermittlung
- Verwenden von Browser-Entwickler-Tools während des Testens
4. Dokumentation und Team-Kenntnisse
- Pflegen Sie eine Registrierung aller Site-Domains, die dasselbe Repository verwenden
- Schulung des Entwicklungsteams in Schritten zur Fehlerbehebung
- Verwalten einer Checkliste für die Einrichtung von Edge Delivery Services-Formularen
- Zulassungslisten aktualisieren wenn neue Sites aus vorhandenen Repositorys erstellt werden
Site-Domain-Verwaltung für responslose Setups
Befolgen Sie bei Helix-5- und Repoless-Architekturen die folgenden Richtlinien:
Beim Erstellen neuer Sites
- Identifizieren der Site-Domain (z. B.
main--newsite--adobe.aem.live) - Aktualisieren der CORS-, um die neue Domain einzuschließen
- Referrer-Filter aktualisieren um die neue Domain in
allow.hostseinzuschließen - Formularübermittlung testen von der neuen Website
- Dokumentieren der neuen Domain in Ihrer Site-Registrierung
Domain-Namensmuster
- Standardmuster:
{branch}--{site}--{owner}.aem.live - Jede Site erhält eine eindeutige Domain, selbst wenn sie dasselbe Repository teilt
- Es können sowohl
.aem.live- als auch.aem.page-Domains verwendet werden
Konfigurationsverwaltung
- Verwenden Sie bestimmte Domäneneinträge in
allow.hosts, um die Sicherheit zu erhöhen. - Ergänzung mit Regex-Mustern für eine breitere Abdeckung
- Regelmäßige Prüfung und Aktualisierung von Zulassungslisten, wenn Websites hinzugefügt oder entfernt werden
Zusätzliche Ressourcen
Verwandte Themen
Benötigen Sie zusätzliche Hilfe? Wenn nach Befolgen dieser Schritte weiterhin Probleme auftreten, wenden Sie sich an den Adobe-Kunden-Support unter:
- Spezifische Fehlermeldungen
- Details zur AEM Cloud Service-Umgebung
- Alle Edge Delivery Services-Site-Domains auf die Zugriff auf die Formularübermittlung benötigt wird
- Relevante Protokolleinträge zum Zeitpunkt des Fehlers
Benötigen Sie zusätzliche Hilfe? Wenn nach Befolgen dieser Schritte weiterhin Probleme auftreten, wenden Sie sich an den Adobe-Kunden-Support unter:
- Spezifische Fehlermeldungen
- Details zur AEM Cloud Service-Umgebung
- Edge Delivery Services-Domäneninformationen
- Relevante Protokolleinträge zum Zeitpunkt des Fehlers