Cross-Origin Resource Sharing (CORS) - AWS SDK for JavaScript

Hilf uns, das zu verbessernAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation, indem Sie Feedback mithilfe derFeedbackverlinken, oder erstellen Sie ein Issue oder Pull Request aufGitHubaus.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-APIbeschreibt ausführlich alle API-Operationen für denAWS SDK for JavaScriptVersion 3 (V3).

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)

Bei Cross-Origin Resource Sharing oder CORS handelt es sich um eine Sicherheitsfunktion der modernen Webbrowser. Es ermöglicht Webbrowsern zu verhandeln, welche Domänen Anforderungen von externen Websites oder Services senden können.

CORS ist ein wichtiger Aspekt bei der Entwicklung von Browseranwendungen mit dem AWS SDK for JavaScript, da die meisten Anforderungen an Ressourcen an eine externe Domäne, wie z. B. der Endpunkt für einen Webservice, gesendet werden. Wenn Ihre JavaScript-Umgebung die CORS-Sicherheit erzwingt, müssen Sie CORS mit dem Service konfigurieren.

Auf der Grundlage der folgenden Anforderungen bestimmt CORS, ob die Freigabe von Ressourcen in einer ursprungsübergreifenden Anforderung zulässig ist:

  • Der spezifischen Domäne, die die Anforderung sendet

  • Dem Typ der HTTP-Anforderung, die gesendet wird (GET, PUT, POST, DELETE usw.)

So funktioniert CORS

Im einfachsten Fall sendet Ihr Browser-Skript eine GET-Anforderung für eine Ressource von einem Server in einer anderen Domäne. Abhängig von der CORS-Konfiguration dieses Servers, wenn die Anforderung von einer Domäne stammt, die berechtigt ist, GET-Anforderungen abzusenden, reagiert der ursprungsübergreifende Server, indem er die angeforderte Ressource zurück gibt.

Wenn entweder die anfordernde Domäne oder der Typ der HTTP-Anforderung nicht autorisiert ist, wird die Anforderung abgelehnt. CORS jedoch ermöglicht ein Preflight der Anforderung, bevor sie tatsächlich abgesendet wird. In diesem Fall wird eine Preflight-Anforderung ausgeführt, in der die OPTIONS-Zugriffsanforderungsoperation gesendet wird. Wenn die CORS-Konfiguration des ursprungsübergreifenden Servers Zugriff auf die anfordernde Domäne gewährt, sendet der Server eine Preflight-Antwort zurück, die alle HTTP-Anforderungstypen aufführt, die die anfordernde Domäne für die angeforderte Ressource vornehmen kann.


                Prozessablauf für CORS-Anforderungen

Ist die CORS-Konfiguration erforderlich

Amazon S3 S3-Buckets benötigen die CORS-Konfiguration, bevor Sie Operationen an ihnen durchführen können. In einigen JavaScript-Umgebungen wird CORS möglicherweise nicht erzwungen und daher ist das Konfigurieren von CORS nicht erforderlich. Beispiel: Wenn Sie Ihre Anwendung aus einem Amazon S3 S3-Bucket hosten und auf Ressourcen aus zugreifen*.s3.amazonaws.comoder einem anderen spezifischen Endpunkt greifen Ihre Anforderungen nicht auf eine externe Domäne zu. Aus diesem Grund benötigt diese Konfiguration kein CORS. In diesem Fall wird CORS immer noch für andere Services als Amazon S3 verwendet.

Konfigurieren von CORS für einen Amazon S3 S3-Bucket

Sie können einen Amazon S3 S3-Bucket für die Verwendung von CORS in der Amazon S3 S3-Konsole konfigurieren.

Wenn Sie CORS imAWSSie müssen JSON verwenden, um eine CORS-Konfiguration zu erstellen. Das neueAWSDie Web Services Management Console unterstützt nur JSON CORS-Konfigurationen.

Wichtig

Im neuenAWSWeb Services Management Conole, Die CORS-Konfiguration muss JSON sein.

  1. In derAWSKlicken Sie auf Web Services Management Conole, öffnen Sie die Amazon S3 S3-Konsole, suchen Sie nach dem Bucket, den Sie konfigurieren möchten, und aktivieren Sie das entsprechende Kontrollkästchen.

  2. Wählen Sie im sich öffnenden BereichBerechtigungenaus.

  3. Auf derBerechtigung-Tab wählenCORS-Konfigurationaus.

  4. Geben Sie Ihre CORS-Konfiguration imCORS-Konfigurations-EditorKlicken Sie auf und danach aufSaveaus.

Eine CORS-Konfiguration ist eine XML-Datei mit einer Reihe von Regeln innerhalb eines <CORSRule>. Eine Konfiguration kann bis zu 100 Regeln enthalten. Eine Regel wird durch eines der folgenden Tags definiert:

  • <AllowedOrigin>— Gibt Domänenursprünge an, denen Sie erlauben, domänenübergreifende Anforderungen zu senden.

  • <AllowedMethod>— Gibt einen Typ der Anforderung an, den Sie (GET, PUT, POST, DELETE, HEAD) in domänenübergreifenden Anforderungen erlauben.

  • <AllowedHeader>— Gibt die Header an, die in einer Preflight-Anforderung zulässig sind.

Beispielkonfigurationen finden Sie unterWie konfiguriere ich CORS für meinen Bucket?imBenutzerhandbuch für Amazon Simple Storage Serviceaus.

CORS-Konfigurationsbeispiel

Das folgende CORS-Konfigurationsbeispiel ermöglicht Benutzern das Anzeigen, Hinzufügen, Entfernen oder Aktualisieren von Objekten innerhalb eines Buckets aus der Domäneexample.orgaus. Wir empfehlen jedoch, dass Sie auf<AllowedOrigin>zur Domain Ihrer Website. Sie können "*" angeben, sodass jeder Ursprung zulässig ist.

Wichtig

In der neuen S3-Konsole muss die CORS-Konfiguration JSON sein.

XML
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://example.org</AllowedOrigin> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <ExposeHeader>ETag</ExposeHeader> <ExposeHeader>x-amz-meta-custom-header</ExposeHeader> </CORSRule> </CORSConfiguration>
JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "HEAD", "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "https://www.example.org" ], "ExposeHeaders": [ "ETag", "x-amz-meta-custom-header"] } ]

Diese Konfiguration autorisiert den Benutzer nicht, Aktionen für den Bucket auszuführen. Sie ermöglicht Sicherheitsmodell des Browsers, eine Anforderung an Amazon S3 zu gestatten. Berechtigungen müssen über Bucket-Berechtigungen oder IAM-Rollenberechtigungen konfiguriert werden.

Sie könnenExposeHeaderum das SDK Antwort-Header lesen zu können, die von Amazon S3 zurückgegeben werden. Lesen Sie zum Beispiel dieETagHeader von einemPUToder mehrteiliger Upload, müssen Sie dieExposeHeader-Tag in Ihrer Konfiguration, wie im vorherigen Beispiel gezeigt. Das SDK kann nur auf Header zugreifen, die über die CORS-Konfiguration bereitgestellt werden. Wenn Sie Metadaten für das Objekt festlegen, werden Werte als Header mit dem Präfix x-amz-meta- zurückgegeben, wie z. B. x-amz-meta-my-custom-header, und müssen auch auf die gleiche Weise bereitgestellt werden.