CORS
È l'acronimo di "Cross-Origin Resource Sharing". CORS consente agli script nelle pagine web di richiedere risorse da altri domini. La maggior parte dei browser web blocca per impostazione predefinita questi tipi di richieste per motivi di sicurezza.
Una pagina web può richiedere risorse da un altro dominio, purché le richieste provengano dall'HTML. Ad esempio, la sezione <head> può fare riferimento a risorse come file CSS, font e file JS di altri domini. Tra gli esempi ci sono gli script di Google Analytics, le librerie jQuery e i font ospitati su un altro server. Allo stesso modo, la sezione <body> può richiedere immagini da una CDN o da un altro dominio. Le richieste di risorse cross-origin nell'HTML non richiedono autorizzazioni CORS.
Quando un elemento script o iframe effettua una richiesta cross-origin, è necessario CORS. Ad esempio, un metodo AJAX — che viene eseguito dopo il caricamento della pagina — non può richiedere una risorsa da un altro dominio. CORS annulla questa impostazione predefinita del browser e consente di completare la richiesta.
CORS viene implementato utilizzando intestazioni HTTP di "controllo degli accessi". L'amministratore di un server può aggiungere o modificare le intestazioni della risposta, che vengono inviate al browser del client quando si accede a una pagina web. Queste impostazioni, applicabili ai server Apache e IIS, possono essere specifiche del sito o dell'intero server. Di seguito sono riportate alcune intestazioni comuni delle richieste e delle risposte:
Intestazioni delle richieste CORS:
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
Intestazioni delle risposte CORS:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
Esempio di CORS
Se uno script su techterms.com richiede una risorsa da sharpened.com utilizzando un'azione GET, può inviare le seguenti intestazioni della richiesta:
Origin: https://techterms.com
Access-Control-Request-Method: GET
Per consentire la richiesta, sharpened.com può rispondere con le seguenti intestazioni:
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin può essere impostata su domini specifici o su un carattere jolly utilizzando un asterisco (*). L'impostazione con carattere jolly consente richieste di risorse cross-origin da tutti i domini, il che può rappresentare un rischio per la sicurezza. Access-Control-Allow-Methods può essere impostata su PUT, POST, DELETE e altri metodi, inclusa un'impostazione con carattere jolly (*) che consente tutti i metodi.
Metti alla prova le tue conoscenze