Risoluzione dei problemi relativi a CORS - Amazon Simple Storage Service

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à.

Risoluzione dei problemi relativi a CORS

I seguenti argomenti possono aiutarti a risolvere alcuni problemi comuni CORS relativi a S3.

403 Errore proibito: non CORS è abilitato per questo bucket

Il seguente 403 Forbidden errore si verifica quando una richiesta multiorigine viene inviata ad Amazon S3 CORS ma non è configurata sul bucket S3.

Errore: HTTP/1.1 403 Forbidden CORS Response: non abilitato per CORS questo bucket.

La CORS configurazione è un documento o una policy con regole che identificano le origini a cui consentirai l'accesso al tuo bucket, le operazioni (HTTPmetodi) che supporterai per ciascuna origine e altre informazioni specifiche sull'operazione. Scopri come configurare CORS su S3 utilizzando la console AWS SDKs Amazon S3 e. REST API Per ulteriori informazioni CORS ed esempi di CORS configurazione, consulta Elements of. CORS

403 Errore proibito: questa CORS richiesta non è consentita

Il seguente 403 Forbidden errore viene ricevuto quando una CORS regola nella CORS configurazione non corrisponde ai dati della richiesta.

Errore: HTTP/1.1 403 CORS Risposta proibita: questa CORS richiesta non è consentita.

Di conseguenza, questo 403 Forbidden errore può verificarsi per diversi motivi:

  • L'origine non è consentita.

  • I metodi non sono consentiti.

  • Le intestazioni richieste non sono consentite.

Per ogni richiesta ricevuta da Amazon S3, è necessario disporre di una CORS regola nella CORS configurazione che corrisponda ai dati contenuti nella richiesta.

L'origine non è consentita

L'Originintestazione di una CORS richiesta al tuo bucket deve corrispondere alle origini dell'AllowedOriginselemento nella tua CORS configurazione. Un carattere jolly ("*") nell'AllowedOriginselemento corrisponderebbe a tutti i metodi. HTTP Per ulteriori informazioni su come aggiornare l'AllowedOriginselemento, vedete Configurazione della condivisione di risorse tra origini diverse (). CORS

Ad esempio, se nell'AllowedOriginselemento è incluso solo il http://www.example1.com dominio, una CORS richiesta inviata dal http://www.example2.com dominio riceverà l'errore. 403 Forbidden

L'esempio seguente mostra parte di una CORS configurazione che include il http://www.example1.com dominio nell'AllowedOriginselemento.

"AllowedOrigins":[ "http://www.example1.com" ]

CORSAffinché una richiesta inviata dal http://www.example2.com dominio abbia esito positivo, il http://www.example2.com dominio deve essere incluso nell'AllowedOriginselemento di CORS configurazione.

"AllowedOrigins":[ "http://www.example1.com" "http://www.example2.com" ]

I metodi non sono consentiti

I HTTP metodi specificati Access-Control-Request-Method in una CORS richiesta al bucket devono corrispondere al metodo o ai metodi elencati nell'AllowedMethodselemento della CORS configurazione. Un carattere jolly ("*") in AllowedMethods corrisponderebbe a tutti i HTTP metodi. Per ulteriori informazioni su come aggiornare l'AllowedOriginselemento, vedete Configurazione della condivisione di risorse tra origini diverse (). CORS

In una CORS configurazione, è possibile specificare i seguenti metodi nell'AllowedMethodselemento:

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

L'esempio seguente mostra parte di una CORS configurazione che include il GET metodo nell'AllowedMethodselemento. Solo le richieste che includono il GET metodo avrebbero esito positivo.

"AllowedMethods":[ "GET" ]

Se un HTTP metodo (ad esempio,PUT) è stato utilizzato in una CORS richiesta o incluso in una CORS richiesta preliminare al bucket ma il metodo non è presente nella CORS configurazione, la richiesta genererebbe un 403 Forbidden errore. Per consentire questa CORS richiesta o richiesta CORS prima del volo, il PUT metodo deve essere aggiunto alla configurazione. CORS

"AllowedMethods":[ "GET" "PUT" ]

Le intestazioni richieste non sono consentite

Le intestazioni elencate nell'Access-Control-Request-Headersintestazione in una richiesta precedente al volo devono corrispondere alle intestazioni dell'elemento della AllowedHeaders configurazione. CORS Per un elenco di intestazioni comuni che possono essere utilizzate nelle richieste ad Amazon S3, consulta Common Request Headers. Per ulteriori informazioni su come aggiornare l'AllowedHeaderselemento, consulta Configurazione della condivisione delle risorse tra le origini (). CORS

L'esempio seguente mostra parte di una CORS configurazione che include l'Authorizationintestazione nell'elemento. AllowedHeaders Solo le richieste per l'Authorizationintestazione avrebbero esito positivo.

"AllowedHeaders": [ "Authorization" ]

Se un'intestazione (ad esempio) Content-MD5 è stata inclusa in una CORS richiesta ma l'intestazione non è presente nella CORS configurazione, la richiesta genererebbe un errore. 403 Forbidden Per consentire questa CORS richiesta, l'Content-MD5intestazione deve essere aggiunta alla configurazione. CORS Se vuoi passare entrambe Authorization le Content-MD5 intestazioni di una CORS richiesta al tuo bucket, conferma che entrambe le intestazioni siano incluse nell'AllowedHeaderselemento della tua configurazione. CORS

"AllowedHeaders": [ "Authorization" "Content-MD5" ]

Intestazioni non trovate in risposta CORS

L'ExposeHeaderselemento della CORS configurazione identifica le intestazioni di risposta che si desidera rendere accessibili agli script e alle applicazioni in esecuzione nei browser, in risposta a una richiesta. CORS

Se gli oggetti archiviati nel bucket S3 contengono metadati definiti dall'utente (ad esempiox-amz-meta-custom-header) oltre ai dati di risposta, questa intestazione personalizzata potrebbe contenere metadati o informazioni aggiuntivi a cui desideri accedere dal codice lato client. JavaScript Tuttavia, per impostazione predefinita, i browser bloccano l'accesso alle intestazioni personalizzate per motivi di sicurezza. Per consentire al lato client di accedere JavaScript alle intestazioni personalizzate, è necessario includere l'intestazione nella configurazione. CORS

Nell'esempio seguente, l'x-amz-meta-custom-header1intestazione è inclusa nell'elemento. ExposeHeaders x-amz-meta-custom-header2Non è incluso nell'ExposeHeaderselemento e manca nella CORS configurazione. Nella risposta, verranno restituiti solo i valori inclusi nell'ExposeHeaderselemento. Se la richiesta includesse l'x-amz-meta-custom-header2intestazione nell'Access-Control-Expose-Headersintestazione, la risposta restituirebbe comunque a. 200 OK Tuttavia, solo l'intestazione consentita, ad esempio, x-amz-meta-custom-header verrebbe restituita e mostrata nella risposta.

"ExposeHeaders": [ "x-amz-meta-custom-header1" ]

Per assicurarti che tutte le intestazioni compaiano nella risposta, aggiungi tutte le intestazioni consentite all'ExposeHeaderselemento nella tua CORS configurazione come mostrato di seguito.

"ExposeHeaders": [ "x-amz-meta-custom-header1", "x-amz-meta-custom-header2" ]

Considerazioni sulle integrazioni proxy CORS S3

Se riscontri errori e hai già controllato la CORS configurazione sul tuo bucket S3 e la richiesta multiorigine viene inviata a proxy come, prova quanto segue: AWS CloudFront

  • Configura le impostazioni per consentire il metodo per le richieste. OPTIONS HTTP

  • Configura il proxy per inoltrare le seguenti intestazioni: OriginAccess-Control-Request-Headers, eAccess-Control-Request-Method.

Alcuni proxy forniscono funzionalità predefinite per le richieste. CORS Ad esempio, in CloudFront, puoi configurare una policy che includa le intestazioni che abilitano le CORS richieste quando l'origine è un bucket S3. Per ulteriori informazioni, consulta Controllare le richieste di origine con una policy e Use managed Origin Request policy nella Developer Guide. CloudFront