Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Cross-Origin Resource Sharing (CORS)
Feststellung, ob die CORS-Unterstützung aktiviert werden soll
Cross-Origin-HTTP-Anfragen zielen auf Folgendes:
-
Eine andere Domäne (z. B. von
example.com
anamazondomains.com
) -
Eine andere Subdomäne (z. B. von
example.com
anpetstore.example.com
) -
Ein anderer Port (z. B. von
example.com
anexample.com:10777
) -
Ein anderes Protokoll (z. B. von
https://example.com
anhttp://example.com
)
Wenn Sie nicht auf Ihre API zugreifen können und eine Fehlermeldung erhalten, die Cross-Origin Request Blocked
enthält, müssen Sie möglicherweise CORS aktivieren.
Cross-Origin-HTTP-Anfragen lassen sich in zwei Arten unterteilen: einfache und nicht einfache Anfragen.
Aktivieren von CORS für eine einfache Anfrage
Eine HTTP-Anfrage ist einfach, wenn alle der folgenden Bedingungen erfüllt sind:
-
Sie wird für eine API-Ressource gestellt, die nur
GET
-,HEAD
- undPOST
-Anfragen erlaubt. -
Wenn es sich um eine
POST
-Methodenanfrage handelt, muss sie einenOrigin
-Header enthalten. -
Der Anfragenutzlast-Inhaltstyp ist
text/plain
,multipart/form-data
oderapplication/x-www-form-urlencoded
. -
Die Anfrage enthält keine benutzerdefinierten Header.
-
Alle weiteren Anforderungen, die in der Mozilla CORS-Dokumentation für einfache Anfragen
aufgelistet sind.
Bei einfachen quellenübergreifenden POST
-Methodenanfragen muss die Antwort Ihrer Ressource den Header Access-Control-Allow-Origin: '*'
oder Access-Control-Allow-Origin:
enthalten.'origin'
Alle anderen Cross-Origin-HTTP-Anfragen sind nicht einfache Anfragen.
Aktivieren von CORS für eine nicht einfache Anfrage
Wenn die Ressourcen Ihrer API nicht einfache Anfragen erhalten, müssen Sie je nach Integrationstyp zusätzliche CORS-Unterstützung aktivieren.
Aktivieren von CORS für Integrationen ohne Proxy
Für diese Integrationen erfordert das CORS-Protokoll
So erstellen Sie eine Preflight-Antwort:
Erstellen Sie eine
OPTIONS
-Methode mit einer Mock-Integration.-
Fügen Sie der Antwort der Methode 200 die folgenden Antwort-Header hinzu:
-
Access-Control-Allow-Headers
-
Access-Control-Allow-Methods
-
Access-Control-Allow-Origin
-
-
Setzen Sie das Integrations-Pass-Through-Verhalten auf
NEVER
. In diesem Fall wird die Methodenanforderung eines nicht zugeordneten Inhaltstyps mit der Antwort „HTTP 415 Unsupported Media Type“ zurückgewiesen. Weitere Informationen finden Sie unter Verhalten bei Methodenanfragen für Payloads ohne Zuordnungsvorlagen für REST APIs in API Gateway. -
Geben Sie Werte für die Antwort-Header ein. Verwenden Sie die folgenden Header-Werte, um alle Ursprünge, alle Methoden und allgemeine Header zuzulassen:
-
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
-
Access-Control-Allow-Methods: 'DELETE,GET,HEAD,OPTIONS,PUT,POST,PATCH'
-
Access-Control-Allow-Origin: '*'
-
Nachdem Sie die Preflight-Anfrage erstellt haben, müssen Sie den Access-Control-Allow-Origin: '*'
- oder Access-Control-Allow-Origin:
-OR-Header für alle CORS-fähigen Methoden für mindestens alle 200 Antworten zurückgeben.'origin'
Aktivierung von CORS für Nicht-Proxy-Integrationen mit dem AWS Management Console
Sie können den verwenden, um CORS AWS Management Console zu aktivieren. API Gateway erstellt eine OPTIONS
-Methode und fügt den Access-Control-Allow-Origin
-Header zu Ihren vorhandenen Methodenintegrationsantworten hinzu. Dies funktioniert nicht immer und manchmal müssen Sie die Integrationsantwort manuell ändern, um den Access-Control-Allow-Origin
-Header für alle CORS-fähigen Methoden für mindestens alle 200 Antworten zurückzugeben.
Aktivieren der CORS-Unterstützung für Proxy-Integrationen
Bei einer Lambda-Proxy-Integration oder einer HTTP-Proxy-Integration ist Ihr Backend für die Rückgabe der Header Access-Control-Allow-Origin
, Access-Control-Allow-Methods
und Access-Control-Allow-Headers
verantwortlich, da eine Proxy-Integration keine Integrationsantwort zurückgibt.
Die folgenden Beispiel-Lambda-Funktionen geben die erforderlichen CORS-Header zurück:
export const handler = async (event) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Headers" : "Content-Type
",
"Access-Control-Allow-Origin": "https://www.example.com
",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET
"
},
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};