Cross-Origin Resource Sharing (CORS) verwenden
Cross-Origin Resource Sharing (CORS) bestimmt für Client-Webanwendungen, die in einer Domain geladen sind, eine Möglichkeit zur Interaktion mit Ressourcen in einer anderen Domain. Mit CORS-Unterstützung können Sie umfassende clientseitige Webanwendungen mit Amazon S3 erstellen und selektiven ursprungsübergreifenden Zugriff auf Ihre Amazon-S3-Ressourcen zulassen.
Dieser Abschnitt bietet eine Übersicht über CORS. Die Unterthemen beschreiben, wie Sie CORS über die Amazon-S3-Konsole aktivieren können, oder programmgesteuert unter Verwendung der Amazon-S3-REST-API und der AWS-SDKs.
Cross-Origin Resource Sharing: Szenarien in Anwendungsfällen
Es folgen typische Beispielszenarien für den Einsatz von CORS.
Szenario 1
Szenario 1: Angenommen, Sie hosten eine Website in einem Amazon-S3-Bucket mit dem Namen website
, wie in Hosten einer statischen Website mit Amazon S3 beschrieben. Ihre Benutzer laden den Website-Endpunkt:
http://website.s3-website.us-east-1.amazonaws.com
Jetzt wollen Sie JavaScript auf den Webseiten verwenden, die in diesem Bucket gespeichert sind, um authentifizierte GET- und PUT-Anfragen für denselben Bucket unter Verwendung des API-Endpunkts von Amazon S3 für den Bucket erstellen zu können, website.s3.us-east-1.amazonaws.com
. Ein Browser würde normalerweise verhindern, dass JavaScript diese Anfragen erstellt, aber mit CORS können Sie Ihren Bucket konfigurieren, um explizit ursprungsübergreifende Anfragen von website.s3-website.us-east-1.amazonaws.com
zu aktivieren.
Szenario 2
Angenommen, Sie möchten eine Web-Schriftart aus Ihrem S3-Bucket hosten. Auch hier erfordern Browser eine CORS-Prüfung (auch als Preflight-Check bezeichnet) für das Laden von Web-Schriftarten. Sie würden den Bucket, der die Web-Schriftart hostet, deshalb so konfigurieren, dass jeder Ursprung diese Anfragen machen kann.
Wie wertet Amazon S3 die CORS-Konfiguration für einen Bucket aus?
Wenn Amazon S3 eine Preflight-Anfrage von einem Browser erhält, wertet es die CORS-Konfiguration für den Bucket aus und verwendet die erste CORSRule
-Regel, die mit der eingehenden Browser-Anfrage übereinstimmt, um eine ursprungsübergreifende Anfrage zuzulassen. Für die Übereinstimmung mit einer Regel müssen die folgenden Bedingungen erfüllt sei:
-
Der
Origin
-Header der Anfrage muss mit einemAllowedOrigin
-Element übereinstimmen. -
Die Anfragemethode (z. B. GET oder PUT) oder der
Access-Control-Request-Method
-Header bei einer Preflight-OPTIONS
-Anfrage muss eines derAllowedMethod
-Elemente sein. -
Jeder im
Access-Control-Request-Headers
-Header der Preflight-Anfrage muss mit einemAllowedHeader
-Element übereinstimmen.
Anmerkung
Alle ACLs und Richtlinien gelten weiterhin, wenn Sie CORS für den Bucket aktivieren.
So unterstützt Object Lambda Access Point CORS
Wenn S3 Object Lambda eine Anforderung von einem Browser empfängt oder die Anforderung einen Origin
-Header enthält, fügt S3 Object Lambda immer das Header-Feld “AllowedOrigins":"*"
hinzu.
Weitere Informationen zur Verwendung von CORS finden Sie in den folgenden Themen.