Utilizzo della funzionalità Cross-Origin Resource Sharing (CORS)
La funzionalità CORS (Cross-Origin Resource Sharing, condivisione delle risorse multiorigine) definisce un metodo con cui le applicazioni Web dei clienti caricate in un dominio possono interagire con le risorse situate in un dominio differente. Con il supporto della funzionalità CORS, è possibile creare applicazioni Web lato client complete con Amazon S3 e concedere l'accesso multiorigine alle risorse di Amazon S3 in modo selettivo.
In questa sezione viene fornita una panoramica della funzionalità CORS. Negli argomenti secondari viene descritto come abilitare la funzionalità CORS con la console di Amazon S3 oppure, in modo programmatico, con REST API di Amazon S3 e gli SDK AWS.
Cross Origin Resource Sharing (CORS): scenari dei casi d'uso
Di seguito sono riportati alcuni scenari di esempio per l'uso della funzionalità CORS.
Scenario 1
Si supponga di ospitare un sito Web in un bucket Amazon S3 denominato website
, come descritto in Hosting di un sito Web statico tramite Amazon S3. Gli utenti caricano l'endpoint del sito Web:
http://website.s3-website.us-east-1.amazonaws.com
A questo punto è possibile utilizzare JavaScript nelle pagine Web archiviate in questo bucket per poter eseguire richieste GET e PUT autenticate nello stesso bucket utilizzando l'endpoint dell'API di Amazon S3 per il bucket, website.s3.us-east-1.amazonaws.com
. Normalmente un browser impedirebbe a JavaScript di consentire queste richieste, ma grazie alla funzionalità CORS è possibile configurare il bucket in modo da consentire esplicitamente le richieste multiorigine da website.s3-website.us-east-1.amazonaws.com
.
Scenario 2
Si supponga di voler ospitare un font Web dal bucket S3. Anche in questo caso, i browser richiedono un controllo della funzionalità CORS (anche denominato "controllo preliminare") per il caricamento dei font Web. È necessario configurare il bucket che ospita il font Web in modo da consentire a qualsiasi origine di eseguire queste richieste.
In che modo Amazon S3 valuta la configurazione CORS in un bucket?
Quando Amazon S3 riceve una richiesta preliminare da un browser, valuta la configurazione CORS per il bucket e utilizza la prima regola CORSRule
corrispondente alla richiesta del browser in entrata per abilitare una richiesta multiorigine. Per garantire la corrispondenza tra la regola e la richiesta, è necessario che siano soddisfatte le condizioni elencate di seguito.
-
L'intestazione
Origin
di una richiesta CORS al bucket deve corrispondere alle origini dell'elementoAllowedOrigins
nella configurazione CORS. -
I metodi HTTP specificati in
Access-Control-Request-Method
in una richiesta CORS al bucket devono corrispondere al metodo o ai metodi elencati nell'elementoAllowedMethods
della configurazione CORS. -
Le intestazioni elencate nell'intestazione
Access-Control-Request-Headers
di una richiesta di verifica devono corrispondere alle intestazioni dell'elementoAllowedHeaders
nella configurazione CORS.
Nota
Le ACL e le policy continuano a essere valide quando si abilita la funzionalità CORS nel bucket.
In che modo Punto di accesso per le espressioni Lambda dell'oggetto supporta CORS
Quando Lambda per oggetti Amazon S3 riceve una richiesta da un browser o la richiesta include un'intestazione Origin
, Lambda per oggetti Amazon S3 aggiunge sempre un campo di intestazione “AllowedOrigins":"*"
.
Per ulteriori informazioni sull'uso di CORS, consulta gli argomenti riportati di seguito.