Wie behebe ich CORS-Fehler von meiner API-Gateway-API aus?
Beim Versuch, meine Amazon-API-Gateway-API aufzurufen, erhalte ich die Fehlermeldung „No 'Access-Control-Allow-Origin' header is present on the requested resource“ (Es ist kein „Access-Control-Allow-Origin“-Header in der angeforderten Ressource vorhanden). Wie behebe ich diesen Fehler und andere CORS-Fehler von API Gateway aus?
Kurzbeschreibung
CORS-Fehler (Cross-Origin Resource Sharing) treten auf, wenn ein Server die vom CORS-Standard benötigten HTTP-Header nicht zurückgibt. Um einen CORS-Fehler von einer API-Gateway-REST-API oder HTTP-API aus zu beheben, müssen Sie die API neu konfigurieren, damit sie dem CORS-Standard entspricht.
Weitere Informationen zum Konfigurieren von CORS für REST-APIs finden Sie unter Aktivieren von CORS für eine REST-API-Ressource. Informationen zu HTTP-APIs finden Sie unter Konfigurieren von CORS für eine HTTP-API.
Hinweis: CORS muss auf Ressourcenebene konfiguriert werden und kann mithilfe von API-Gateway-Konfigurationen oder Backend-Integrationen wie AWS Lambda verarbeitet werden.
Lösung
Das folgende Beispiel zeigt, wie Sie den CORS-Fehler No ‘Access-Control-Allow-Origin’ header present beheben können. Sie können allerdings zur Behebung aller CORS-Fehler ähnlich vorgehen. Zum Beispiel: Methode wird unter Access-Control-Allow-Methods-Headerfehlern nicht unterstützt und keine Access-Control-Allow-Headers-Header weisen Fehler auf.
Hinweis: Der Fehler Keine 'Access-Control-Allow-Origin'-Header vorhanden kann aus einem der folgenden Gründe auftreten:
- Die API ist nicht mit einer OPTIONEN-Methode konfiguriert, die die erforderlichen CORS-Header zurückgibt.
- Ein anderer Methodentyp (wie GET, PUT oder POST) ist nicht für die Rückgabe der erforderlichen CORS-Header konfiguriert.
- Eine API mit Proxy-Integration oder Nicht-Proxy-Integration ist nicht so konfiguriert, dass die erforderlichen CORS-Header zurückgegeben werden.
- (Nur bei privaten REST-APIs) Es wird die falsche Aufruf-URL aufgerufen oder der Datenverkehr wird nicht zum Schnittstellenendpunkt der Virtual Private Cloud (VPC) weitergeleitet.
Bestätigen Sie die Fehlerursache
Es gibt zwei Möglichkeiten, die Ursache eines CORS-Fehlers von API Gateway zu bestätigen:
- Erstellen Sie eine HTTP-Archivdatei (HAR), wenn Sie Ihre API aufrufen. Bestätigen Sie dann die Fehlerursache in der Datei, indem Sie die Header in den Parametern überprüfen, die in der API-Antwort zurückgegeben werden.
-oder- - Überprüfen Sie mithilfe der Entwicklertools in Ihrem Browser die Anforderungs- und Antwortparameter der fehlgeschlagenen API-Anforderung.
Konfigurieren Sie CORS für Ihre API-Ressource, bei der der Fehler auftritt
Bei REST-APIs
Befolgen Sie die Anweisungen unter Aktivieren von CORS auf einer Ressource mithilfe der API-Gateway-Konsole.
Bei HTTP-APIs
Befolgen Sie die Anweisungen unter Konfigurieren von CORS für eine HTTP-API.
Wichtig: Wenn Sie CORS für eine HTTP-API konfigurieren, sendet API Gateway automatisch eine Antwort auf OPTIONS-Vorabanforderungen. Diese Antwort wird auch gesendet, wenn keine OPTIONS-Route für Ihre API konfiguriert ist. Bei einer CORS-Anforderung fügt API Gateway die konfigurierten CORS-Header der Antwort einer Integration hinzu.
Gehen Sie beim Konfigurieren von CORS auf Ihrer API-Ressource unbedingt folgendermaßen vor:
- Aktivieren Sie für Gateway Responses for <api-name> API die Kontrollkästchen DEFAULT 4XX und DEFAULT 5XX.
Hinweis: Wenn Sie diese Standardoptionen auswählen, antwortet API Gateway mit den erforderlichen CORS-Headern, selbst wenn eine Anforderung den Endpunkt nicht erreicht. Wenn eine Anforderung beispielsweise einen falschen Ressourcenpfad enthält, antwortet API Gateway immer noch mit dem Fehler 403 „Missing Authentication Token“.
- Aktivieren Sie für Methods das Kontrollkästchen für die OPTIONS-Methode, falls diese noch nicht aktiviert ist. Aktivieren Sie außerdem die Kontrollkästchen für alle anderen Methoden, die für CORS-Anforderungen verfügbar sind. Beispiel: GET, PUT und POST.
Hinweis: Durch das Konfigurieren von CORS in der API-Gateway-Konsole wird der Ressource eine OPTIONS-Methode hinzugefügt, falls noch keine vorhanden ist. Außerdem wird die Antwort 200 der OPTIONS-Methode mit den erforderlichen Access-Control-Allow-*-Headern konfiguriert. Wenn Sie CORS bereits mit der Konsole konfiguriert haben, werden bei der erneuten Konfiguration alle vorhandenen Werte überschrieben.
Konfigurieren Sie Ihre REST-API-Integrationen so, dass die erforderlichen CORS-Header zurückgegeben werden
Konfigurieren Sie Ihre Backend-AWS Lambda-Funktion oder Ihren HTTP-Server so, dass die erforderlichen CORS-Header in seiner Antwort gesendet werden. Beachten Sie Folgendes:
- Zulässige Domänen müssen als Liste in den Header-Wert Access-Control-Allow-Origin aufgenommen werden.
- Bei Proxy-Integrationen können Sie in API Gateway keine Integrationsantwort einrichten, um die vom Backend Ihrer API zurückgegebenen Antwortparameter zu ändern. Bei einer Proxy-Integration leitet API Gateway die Backend-Antwort direkt an den Client weiter.
- Wenn Sie eine Nicht-Proxy-Integration verwenden, müssen Sie manuell eine Integrationsantwort in API Gateway einrichten, damit die erforderlichen CORS-Header zurückgegeben werden.
Hinweis: Bei APIs mit einer Nicht-Proxy-Integration werden beim Konfigurieren von CORS für eine Ressource mithilfe der API-Gateway-Konsole automatisch die erforderlichen CORS-Header zur Ressource hinzugefügt.
(Nur bei privaten REST APIs) Überprüfen Sie die private DNS-Einstellung Ihres Schnittstellenendpunkts
Ermitteln Sie für private REST-APIs, ob privates DNS für den zugehörigen Schnittstellen-VPC-Endpunkt aktiviert ist.
Wenn privates DNS aktiviert ist
Stellen Sie sicher, dass Sie Ihre private API aus Ihrer Amazon Virtual Private Cloud (Amazon VPC) mit dem privaten DNS-Namen aufrufen.
Wenn privates DNS nicht aktiviert ist
Sie müssen den Datenverkehr manuell von der Aufruf-URL an die IP-Adressen des VPC-Endpunkts weiterleiten.
Hinweis: Unabhängig davon, ob privates DNS aktiviert ist oder nicht, müssen Sie die folgende Aufruf-URL verwenden:
https://api-id.execute-api.region.amazonaws.com/stage-name
Stellen Sie sicher, dass Sie die Werte für api-id, region und stage-name durch die erforderlichen Werte für Ihre API ersetzen. Weitere Informationen finden Sie unter Aufrufen einer privaten API.
Wichtig: Wenn CORS konfiguriert, privates DNS aber nicht aktiviert ist, beachten Sie die folgenden Einschränkungen:
- Sie können keine endpunktspezifischen öffentlichen DNS-Namen verwenden, um von Ihrer Amazon VPC aus auf Ihre private API zuzugreifen.
- Sie können die Host-Header-Option nicht verwenden, da Anforderungen von einem Browser die Bearbeitung des Host-Headers nicht zulassen.
- Sie können den benutzerdefinierten Header x-apigw-api-id nicht verwenden, da er eine OPTIONS-Vorabanforderung auslöst, die den Header nicht enthält. API-Aufrufe mit dem Header x-apigw-api-id erreichen Ihre API nicht.
Ähnliche Informationen
CORS für eine Ressource mithilfe der API-Gateway-Import-API aktivieren
Ähnliche Videos

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 6 Monaten
- AWS OFFICIALAktualisiert vor 6 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr