

La AWS SDK per JavaScript v2 è arrivata. end-of-support [Ti consigliamo di migrare alla AWS SDK per JavaScript v3.](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) [Per ulteriori dettagli e informazioni su come effettuare la migrazione, consulta questo annuncio.](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Cross-Origin Resource Sharing (CORS)
<a name="cors"></a>

Il Cross-origin resource sharing, o CORS, è una caratteristica di sicurezza dei moderni browser Web. In questo modo i browser Web possono negoziare quali domini possono fare richieste di siti Web o servizi esterni. CORS è fondamentale quando si sviluppano applicazioni di tipo browser con AWS SDK per JavaScript perché la maggior parte delle richieste di risorse vengono inviate a un dominio esterno, ad esempio l'endpoint di un servizio Web. Se JavaScript l'ambiente utilizza la sicurezza CORS, è necessario configurare CORS con il servizio.

CORS determina se consentire la condivisione di risorse in una richiesta cross-origin in base a quanto segue:
+ Il dominio specifico che effettua la richiesta 
+ Il tipo di richiesta HTTP effettuata (GET, PUT, POST, DELETE e così via)

## Come funziona CORS
<a name="how-cors-works"></a>

Nel caso più semplice, lo script di browser invia una richiesta GET per una risorsa da un server in un altro dominio. A seconda della configurazione CORS del server, se la richiesta proviene da un dominio che è autorizzato a inviare le richieste GET, il server cross-origin risponde restituendo la risorsa richiesta.

Se il dominio che effettua la richiesta o il tipo di richiesta HTTP non è autorizzato, la richiesta viene negata. Tuttavia, CORS permette di preparare la richiesta prima dell'invio. In questo caso, viene effettuata una richiesta preliminare in cui viene inviata la richiesta di accesso `OPTIONS`. Se la configurazione CORS del server cross-origin consente di concedere l'accesso al dominio richiedente, il server invia una risposta preliminare che elenca tutti i tipi di richieste HTTP che il dominio può effettuare sulla risorsa richiesta.

![\[Flusso di elaborazione per le richieste CORS\]](http://docs.aws.amazon.com/it_it/sdk-for-javascript/v2/developer-guide/images/cors-overview.png)


## Si richiede la configurazione CORS
<a name="the-need-for-cors-configuration"></a>

I bucket Amazon S3 richiedono la configurazione CORS prima di poter eseguire operazioni su di essi. In alcuni JavaScript ambienti CORS potrebbe non essere applicato e pertanto la configurazione di CORS non è necessaria. Ad esempio, se ospiti l'applicazione da un bucket Amazon S3 e accedi alle risorse da `*.s3.amazonaws.com` o da qualche altro endpoint specifico, le tue richieste non accederanno a un dominio esterno. Pertanto, questa configurazione non richiede CORS. In questo caso, CORS viene ancora utilizzato per servizi diversi da Amazon S3.

## Configurazione di CORS per un bucket Amazon S3
<a name="configuring-cors-s3-bucket"></a>

Puoi configurare un bucket Amazon S3 per utilizzare CORS nella console Amazon S3.

1. Nella console Amazon S3, scegli il bucket che desideri modificare.

1. Seleziona la scheda **Autorizzazioni** e scorri verso il basso fino al pannello **Cross-Origin Resource Sharing** (CORS).  
![\[Editor di configurazione CORS in Amazon S3 per impostare la configurazione CORS di un bucket\]](http://docs.aws.amazon.com/it_it/sdk-for-javascript/v2/developer-guide/images/cors_panel.png)

1. **Scegli **Modifica** e digita la tua configurazione CORS nell'editor di configurazione **CORS**, quindi scegli Salva.**

Una configurazione CORS è un file XML che contiene una serie di regole all'interno di un `<CORSRule>`. Una configurazione può avere massimo 100 regole. Una regola è definita da uno dei seguenti tag:
+ `<AllowedOrigin>`, che consente di specificare le origini di dominio a cui si consente di effettuare richieste multidominio.
+ `<AllowedMethod>`, che specifica un tipo di richiesta consentita (GET, POST, PUT, DELETE, HEAD) nelle richieste multidominio.
+ `<AllowedHeader>`, che specifica le intestazioni consentite in una richiesta OPTIONS preliminare.

Per configurazioni di esempio, vedi [Come posso configurare CORS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html#how-do-i-enable-cors) su My Bucket? nella *Guida per l'utente di Amazon Simple Storage Service*.

## Esempio di configurazione CORS
<a name="cors-configuration-example"></a>

Il seguente esempio di configurazione CORS consente a un utente di visualizzare, aggiungere, eliminare o aggiornare gli oggetti all'interno di un bucket dal dominio `example.org`, anche se ti consigliamo di creare l'ambito `<AllowedOrigin>` del dominio del sito Web. È possibile specificare `"*"` per consentire l'origine.

**Importante**  
Nella nuova console S3, la configurazione CORS deve essere JSON.

------
#### [ 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"]
    }
]
```

------

Questa configurazione non autorizza l'utente a eseguire azioni nel bucket. Abilita il modello di sicurezza del browser per consentire una richiesta ad Amazon S3. Le autorizzazioni devono essere configurate tramite i permessi dei bucket o i permessi dei ruoli IAM.

Puoi utilizzarlo `ExposeHeader` per consentire all'SDK di leggere le intestazioni di risposta restituite da Amazon S3. Ad esempio, se si desidera leggere l'intestazione `ETag` da un `PUT` o un caricamento in più parti, è necessario includere il tag `ExposeHeader` nella configurazione, come mostrato nell'esempio precedente. Il kit SDK è in grado di accedere solo alle intestazioni esposte attraverso la configurazione CORS. Se si impostano i metadati nell'oggetto, i valori vengono restituiti come intestazioni con il prefisso `x-amz-meta-`, ad esempio `x-amz-meta-my-custom-header`, e devono essere esposti in modo analogo.