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.
Alle ACLs und Richtlinien gelten weiterhin, wenn Sie CORS für den Bucket aktivieren.
Weitere Informationen zur Verwendung von CORS finden Sie in den folgenden Themen.