Direkt zum Inhalt

Wie behebe ich CORS-Fehler von meiner API-Gateway-API aus?

Lesedauer: 4 Minute
0

Ich erhalte die Fehlermeldung „Auf der angeforderten Ressource ist kein Header 'Access-Control-Allow-Origin' vorhanden“, wenn ich versuche, meine API bei Amazon API Gateway aufzurufen. Ich möchte diesen Fehler und andere Cross-Origin Resource Sharing (CORS)-Fehler vom API-Gateway aus beheben.

Kurzbeschreibung

CORS-Fehler treten auf, wenn ein Server die nach dem CORS-Standard erforderlichen HTTP-Header nicht zurückgibt. Um einen CORS-Fehler von einer API-Gateway-REST-API oder HTTP-API zu beheben, musst du die API neu konfigurieren, sodass sie dem CORS-Standard entspricht.

Hinweis: Du musst CORS auf Ressourcenebene konfigurieren. Verwenden Sie API-Gateway-Konfigurationen oder Backend-Integrationen wie AWS Lambda.

Behebung

Zusätzlich zum CORS-Fehler No 'Access-Control-Allow-Origin' header present können Sie mit folgendem Verfahren auch alle anderen CORS-Fehler beheben. Andere CORS-Fehler sind zum Beispiel Method not supported under Access-Control-Allow-Methods header und No 'Access-Control-Allow-Headers' headers present.

Der Fehler No 'Access-Control-Allow-Origin' header present kann aus einem der folgenden Gründe auftreten:

  • Die API ist nicht mit einer OPTIONS-Methode konfiguriert, die die erforderlichen CORS-Header zurückgibt.
  • Es sind keine anderen Methodentypen wie GET, PUT oder POST so konfiguriert, dass sie die erforderlichen CORS-Header zurückgeben.
  • Es ist keine API mit Proxy-Integration oder Nicht-Proxy-Integration so konfiguriert, dass sie die erforderlichen CORS-Header zurückgibt.
  • Für private REST-APIs wird die falsche Aufruf-URL aufgerufen. Oder der Datenverkehr wird nicht an den VPC-Endpunkt (Virtual Private Cloud) der Schnittstelle weitergeleitet.

Bestätigen der Fehlerursache

Ergreifen Sie die folgenden Maßnahmen:

  • Erstelle eine HTTP Archive (HAR)-Datei, wenn du die API aufrufst. Überprüfe dann die Parameter-Header, die in der API-Antwort zurückgegeben werden, um die Ursache des Dateifehlers zu bestätigen.
  • Verwende die Entwicklertools im Browser, um die Anfrage- und Antwortparameter der fehlgeschlagenen API-Anfrage zu überprüfen.

Konfigurieren von CORS für die ausgefallene API-Ressource

Für REST-APIs

Folge den Anweisungen unter CORS auf einer Ressource mithilfe der API-Gateway-Konsole aktivieren.

Für HTTP-APIs

Folge den Anweisungen unter CORS für HTTP-APIs in API Gateway konfigurieren.

Wenn du CORS auf die API-Ressource konfigurierst, wähle die folgenden Optionen aus:

Wähle für Gateway-Antworten die Optionen DEFAULT 4XX und DEFAULT 5XX aus. Wenn du DEFAULT 4XX und DEFAULT 5XX auswählst, reagiert API Gateway mit den erforderlichen CORS-Headern, auch wenn eine Anfrage den Endpunkt nicht erreicht. Wenn eine Anfrage beispielsweise einen falschen Ressourcenpfad enthält, reagiert API Gateway dennoch mit dem Fehler 403 "Missing Authentication Token".

Wenn OPTIONS für Access-Control-Allow-Methods nicht ausgewählt ist, wähle dies und alle anderen Methoden aus, die für CORS-Anfragen verfügbar sind, wie GET, PUT und POST. Die API-Gateway-Konsole konfiguriert die 200-Antwort der OPTIONS-Methode mit den erforderlichen Access-Control-Allow-Headern und überschreibt vorhandene Werte in der neu konfigurierten Ressource.

REST-API-Integrationen für das Zurückgeben der erforderlichen CORS-Header konfigurieren

Konfiguriere die Lambda-Funktion im Backend oder den HTTP-Proxy-Server so, dass die erforderlichen CORS-Header in der Antwort gesendet werden. Zulässige Domains müssen als Liste im Header-Wert Access-Control-Allow-Origin enthalten sein.

Für Proxy-Integrationen kannst du in API Gateway keine Integrationsantwort einrichten, um die vom Backend der API zurückgegebenen Antwortparameter zu ändern. Bei einer Proxy-Integration leitet API Gateway die Backend-Antwort direkt an den Client weiter.

Wenn du eine Nicht-Proxy-Integration verwendest, musst du manuell eine Integrationsantwort in API Gateway einrichten, um die erforderlichen CORS-Header zurückzugeben. Verwende die API-Gateway-Konsole, um CORS zu konfigurieren. Die Konsole fügt der konfigurierten Ressource automatisch die erforderlichen CORS-Header hinzu.

(Nur für private REST-APIs) Überprüfen der privaten DNS-Einstellung des Schnittstellenendpunkts

Stelle für private REST-APIs fest, ob privates DNS auf dem zugehörigen Schnittstellen-VPC-Endpunkt aktiviert ist.

Wenn privates DNS aktiviert ist

Verwenden Sie den privaten DNS-Namen, um Ihre private API aus Ihrer Amazon Virtual Private Cloud (Amazon VPC) heraus aufzurufen.

Wenn privates DNS nicht aktiviert ist

Du musst den Datenverkehr manuell von der Aufruf-URL zu den IP-Adressen des VPC-Endpunkts weiterleiten. Verwende die folgende Aufruf-URL (Amazon Route 53-Alias):

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

Hinweis: Ersetze rest-api-id, region, vpce-id und stage durch deine API-Werte.

Wenn privates DNS nicht aktiviert ist, kannst du keine endpunktspezifischen öffentlichen DNS-Namen verwenden, um von der VPC aus auf die private API zuzugreifen. Du kannst die Option Host-Header nicht verwenden, da Anfragen von einem Browser keine Bearbeitung des Host-Headers zulassen.

Für private APIs kannst du den benutzerdefinierten Header x-apigw-api-id nicht verwenden, da er eine Preflight-OPTIONS-Anfrage initiiert, die den Header nicht enthält. API-Aufrufe, die den Header x-apigw-api-id verwenden, erreichen Ihre API nicht.

Hinweis: Stellen Sie sicher, dass die Autorisierung in der OPTIONS-Methode Ihrer API deaktiviert ist.

Ähnliche Informationen

CORS für eine API-Gateway-API testen

CORS für eine Ressource mithilfe der API Gateway Import API aktivieren