Come posso risolvere l'errore "Nessuna intestazione 'Access-Control-Allow-Origin' presente nella risorsa richiesta" di CloudFront?

5 minuti di lettura
0

Ricevo l'errore CORS "Nessuna intestazione ‘Access-Control-Allow-Origin’” sulla risorsa richiesta in Amazon CloudFront.

Risoluzione

Verifica che la policy di condivisione delle risorse tra le origini (CORS) consenta all'origine di restituire l'intestazione Access-Control-Allow-Origin

Nota: se ricevi errori durante l'esecuzione dei comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Esegui il comando seguente per verificare che il server di origine restituisca l'intestazione Access-Control-Allow-Origin. Sostituisci esempio.com con l'intestazione di origine richiesta. Sostituisci https://www.esempio.net/video/call/System.generateId.dwr con l'URL della risorsa che restituisce l'errore di intestazione.

curl -H "Origin: example.com" -v "https://www.example.net/video/call/System.generateId.dwr"

Se la policy CORS consente al server di origine di restituire l'intestazione Access-Control-Allow-Origin, verrà visualizzata una risposta simile alla seguente:

HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Mon, 01 May 2018 03:06:41 GMT
Content-Type: text/html
Content-Length: 3770
Last-Modified: Thu, 16 Mar 2017 01:50:52 GMT
Connection: keep-alive
ETag: "58c9ef7c-eba"
Access-Control-Allow-Origin:
    example.com
Accept-Ranges: bytes

Se le intestazioni CORS non vengono restituite nella risposta, significa che il server di origine non è configurato correttamente per CORS. Configura una policy CORS sulla tua origine personalizzata o sull'origine di Amazon Simple Storage Service (Amazon S3).

Configura la distribuzione CloudFront per inoltrare le intestazioni appropriate al server di origine

Dopo aver impostato una policy CORS sul server di origine, configura la distribuzione CloudFront per inoltrare le intestazioni di origine al server di origine. Se il tuo server di origine è un bucket Amazon S3, configura la distribuzione per inoltrare le seguenti intestazioni ad Amazon S3:

  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Origine

Per inoltrare le intestazioni al server di origine, CloudFront dispone di due policy predefinite a seconda del tipo di origine: CORS-S3Origin e CORS-CustomOrigin.

Per aggiungere una policy predefinita alla tua distribuzione:

  1. Apri la distribuzione dalla console CloudFront.
  2. Scegli la scheda Comportamenti.
  3. Scegli Crea comportamento. In alternativa, seleziona un comportamento esistente, quindi scegli Modifica.
  4. In Chiave di cache e richieste di origine, scegli Policy della cache e policy di richiesta di origine. Quindi, per la Policy di richiesta di origine, scegli CORS-S3Origin o CORS-CustomOrigin dall'elenco a discesa. Per ulteriori informazioni, consulta la sezione Utilizzo delle policy di richiesta origine gestite.
    Nota: al contrario, per creare la tua policy per la cache, consulta la sezione Creazione di policy della cache.
  5. Scegli Crea comportamento. Oppure, scegli Salva modifiche se stai modificando un comportamento esistente.

Per inoltrare le intestazioni utilizzando una policy per la cache:

  1. Crea una policy per la cache.
  2. Sotto la voce Impostazioni chiave cache, scegli Includi le seguenti intestazioni in Intestazioni. Dall'elenco a discesa Aggiungi intestazione scegli una delle intestazioni richieste dalla tua origine.
  3. Compila le impostazioni della policy della cache come richiesto dal comportamento a cui stai associando la policy.
  4. Associa la policy della cache al comportamento della tua distribuzione CloudFront.

Per inoltrare le intestazioni utilizzando le impostazioni della cache legacy:

  1. Apri la distribuzione dalla console CloudFront.
  2. Scegli la scheda Comportamenti.
  3. Scegli Crea comportamento. In alternativa, seleziona un comportamento esistente, quindi scegli Modifica.
  4. In Chiave di cache e richieste di origine, seleziona Impostazioni cache legacy.
  5. Nell'elenco a discesa Intestazioni, scegli le intestazioni richieste dalla tua origine. Scegli Aggiungi personalizzate per aggiungere le intestazioni richieste dalla tua origine che non appaiono nell'elenco a discesa.
  6. Scegli Crea comportamento. Oppure scegli Salva modifiche se stai modificando un comportamento esistente.

Nota: assicurati anche di inoltrare l'intestazione come parte della richiesta del client a CloudFront, che CloudFront inoltrerà all'origine.

Configura il comportamento della cache della distribuzione CloudFront in modo che consenta il metodo OPTIONS per le richieste HTTP

Se continui a riscontrare errori dopo aver aggiornato la policy CORS e inoltrato le intestazioni appropriate, consenti il metodo HTTP OPTIONS nel comportamento della cache della tua distribuzione. Per impostazione predefinita, CloudFront consente solo i metodi GET e HEAD. Tuttavia, alcuni browser Web possono inviare richieste per il metodo OPTIONS. Per attivare il metodo OPTIONS sulla tua distribuzione CloudFront:

  1. Apri la distribuzione dalla console CloudFront.
  2. Scegli la scheda Comportamenti.
  3. Scegli Crea comportamento. In alternativa, seleziona un comportamento esistente, quindi scegli Modifica.
  4. In Metodi HTTP consentiti, seleziona GET, HEAD, OPTIONS.
  5. Scegli Crea comportamento. Oppure scegli Salva modifiche se stai modificando un comportamento esistente.

Configura la policy di risposta CloudFront in modo che restituisca le intestazioni Access-Control-Allow-Origin richieste

Se il server di origine non è accessibile o non può essere impostato per restituire le intestazioni CORS appropriate, configura un CloudFront in modo da restituire le intestazioni CORS richieste. Per configurarlo, crea policy per le intestazioni delle risposte:

  1. Apri la distribuzione dalla console CloudFront.
  2. Scegli la scheda Comportamenti.
  3. Scegli Crea comportamento. In alternativa, seleziona un comportamento esistente, quindi scegli Modifica.
  4. In Policy delle intestazioni di risposta:
    Seleziona una policy di risposta esistente dall'elenco a discesa.
    -oppure-
    Scegli Crea policy per creare una nuova policy per le intestazioni delle risposte. Nella nuova policy, sotto la voce Condivisione di risorse tra le origini, attiva CORS.
  5. Compila le altre impostazioni secondo necessità e scegli Crea policy.
  6. Dalla pagina Crea comportamento, scegli la policy che hai creato dall'elenco a discesa.
  7. Scegli Crea comportamento. Oppure scegli Salva modifiche se stai modificando un comportamento esistente.

Nota: CloudFront in genere applica le modifiche alle distribuzioni entro cinque minuti. Dopo aver modificato la distribuzione, annulla la cache per cancellare le risposte precedentemente memorizzate nella cache.

Informazioni correlate

Configurazione CloudFront per rispettare le impostazioni CORS

Configurazione della funzionalità CORS (Cross Origin Resource Sharing)

Utilizzo delle policy delle intestazioni di risposta gestite

Aggiunta di una intestazione CORS (Cross Origin Resource Sharing) alla risposta

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa