Configurazione CORS - Amazon Simple Storage Service

Configurazione CORS

Per configurare il bucket in modo da consentire le richieste multiorigine, si crea una configurazione CORS. La configurazione CORS è un documento XML con le regole che identificano le origini che potranno accedere al bucket, le operazioni (metodi HTTP) supportate per ogni origine e altre informazioni specifiche dell'operazione. È possibile aggiungere fino a 100 regole alla configurazione. È possibile aggiungere la configurazione CORS come risorsa secondaria cors al bucket.

Se configura CORS nella console S3, è necessario utilizzare JSON per creare una configurazione CORS. La nuova console S3 supporta solo configurazioni JSON CORS.

Per ulteriori informazioni sulla configurazione CORS e sugli elementi in essa contenuti, consulta gli argomenti riportati di seguito. Per istruzioni su come aggiungere una configurazione CORS, consulta Configurazione della funzionalità Cross-Origin Resource Sharing (CORS).

Importante

Nella console S3, la configurazione CORS deve essere JSON.

Esempio 1

Anziché accedere a un sito Web utilizzando un endpoint del sito Web Amazon S3, è possibile utilizzare il proprio dominio, come example1.com, per consegnare il contenuto. Per informazioni sull'uso del proprio dominio, consulta Configurazione di un sito web statico utilizzando un dominio personalizzato registrato con Route 53.

La configurazione cors di esempio riportata di seguito include tre regole, specificate come elementi CORSRule:

  • La prima regola consente le richieste multiorigine PUT, POST e DELETE provenienti dall'origine http://www.example1.com La regole consente inoltre tutte le intestazioni in una richiesta OPTIONS preliminare tramite l'intestazione Access-Control-Request-Headers. In risposta alle richieste OPTIONS preliminari, Amazon S3 restituisce le intestazioni richieste.

  • La seconda regola consente le stesse richieste multiorigine della prima regola, ma si applica a un'altra origine, http://www.example2.com.

  • La terza regola consente le richieste multiorigine GET provenienti da tutte le origini. Il carattere jolly * si riferisce a tutte le origini.

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example1.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example2.com" ], "ExposeHeaders": [] }, { "AllowedHeaders": [], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example1.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://www.example2.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> </CORSRule> </CORSConfiguration>

Esempio 2

La configurazione CORS supporta anche i parametri di configurazione opzionali, come illustrato nella seguente configurazione CORS. In questo esempio la configurazione CORS consente le richieste multiorigine PUT, POST e DELETE provenienti dall'origine http://www.example.com.

JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "http://www.example.com" ], "ExposeHeaders": [ "x-amz-server-side-encryption", "x-amz-request-id", "x-amz-id-2" ], "MaxAgeSeconds": 3000 } ]
XML
<CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <MaxAgeSeconds>3000</MaxAgeSeconds> <ExposeHeader>x-amz-server-side-encryption</ExposeHeader> <ExposeHeader>x-amz-request-id</ExposeHeader> <ExposeHeader>x-amz-id-2</ExposeHeader> </CORSRule> </CORSConfiguration>

L'elemento CORSRule nella configurazione precedente include gli elementi opzionali riportati di seguito.

  • MaxAgeSeconds – Specifica l'intervallo di tempo in secondi (in questo esempio, 3000) durante il quale il browser memorizza nella cache una risposta Amazon S3 a una richiesta OPTIONS preliminare per la risorsa specificata. La memorizzazione nella cache della risposta consente al browser di non inviare richieste preliminari ad Amazon S3 se la richiesta originale viene ripetuta.

  • ExposeHeader – Identifica le intestazioni della risposta (in questo esempio, x-amz-server-side-encryption, x-amz-request-id e x-amz-id-2) a cui i clienti possono accedere dalle proprie applicazioni (ad esempio, da un oggetto JavaScript XMLHttpRequest).

Elemento AllowedMethod

Nella configurazione CORS è possibile specificare i valori indicati di seguito per l'elemento AllowedMethod.

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

Elemento AllowedOrigin

Nell'elemento AllowedOrigin, è possibile specificare le origini da cui si desiderano consentire le richieste multidominio, ad esempio http://www.example.com. La stringa di origine può contenere solamente un carattere jolly *, ad esempio http://*.example.com. Se si desidera, è possibile specificare * come origine per consentire a tutte le origini di inviare richieste multiorigine. È anche possibile specificare https per abilitare solo le origini sicure.

Elemento AllowedHeader

L'elemento AllowedHeader specifica le intestazioni consentite in una richiesta preliminare tramite l'intestazione Access-Control-Request-Headers. Ogni nome di intestazione in Access-Control-Request-Headers deve corrispondere a una voce nella regola. Tra le intestazioni richieste, Amazon S3 invierà nella risposta solo quelle consentite. Per un esempio di elenco di intestazioni che possono essere utilizzate nelle richieste ad Amazon S3, consulta l'argomento relativo alle intestazioni di richiesta comuni nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Ogni stringa AllowedHeader nella regola può contenere al massimo un carattere jolly *. Ad esempio, <AllowedHeader>x-amz-*</AllowedHeader> abiliterà tutte le intestazioni specifiche di Amazon.

Elemento ExposeHeader

Ogni elemento ExposeHeader identifica un'intestazione nella risposta a cui si desidera che i clienti possano accedere dalle proprie applicazioni (ad esempio, da un oggetto JavaScript XMLHttpRequest). Per un elenco delle intestazioni di risposta più comuni di Amazon S3, consulta l'argomento relativo alle intestazioni di richiesta comuni nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Elemento MaxAgeSeconds

L'elemento MaxAgeSeconds specifica l'intervallo di tempo in secondi durante il quale il browser può memorizzare nella cache la risposta a una richiesta preliminare identificata in base a risorsa, metodo HTTP e origine.