Cos'è CORS?
sobes.tech AI
Risposta dell'AI
CORS (Cross-Origin Resource Sharing) — è un meccanismo che consente alle pagine web di richiedere risorse da un altro dominio, porta o protocollo diverso da quello da cui è stata caricata la pagina stessa. Questo avviene tramite intestazioni HTTP aggiuntive.
Per impostazione predefinita, i browser applicano la politica Same-Origin Policy (SOP), che vieta agli script eseguiti su una pagina di accedere ai dati di un'altra origine (dominio, porta, protocollo). CORS allenta questa politica in modo controllato, consentendo al server di autorizzare esplicitamente le richieste tra domini.
Come funziona CORS:
- Richiesta semplice: Se la richiesta soddisfa determinati criteri (ad esempio, metodo GET o POST, intestazioni consentite), il browser invia la richiesta direttamente con un'intestazione aggiuntiva
Originche indica la fonte della richiesta. Il server, ricevendo questa intestazione, può rispondere conAccess-Control-Allow-Originche indica la fonte consentita. - Preflight: Per richieste "non semplici" (ad esempio, usando metodi
PUT,DELETE, o con intestazioni personalizzate), il browser invia prima una richiesta preliminare (OPTIONS). Questa domanda al server se la richiesta principale è consentita. Il server risponde con intestazioni che indicano i metodi, le intestazioni e le fonti consentite. Se il preflight ha successo, il browser invia la richiesta effettiva.
Intestazioni principali di CORS:
Origin: Inviato dal browser nella richiesta, indica la fonte (dominio, porta, protocollo) della pagina che effettua la richiesta.Access-Control-Allow-Origin: Inviato dal server nella risposta, indica la fonte che può ricevere la risposta. Può essere un dominio specifico,*(qualsiasi fonte), o generato dinamicamente in base all'intestazioneOrigin.Access-Control-Allow-Methods: Inviato dal server in risposta al preflight, indica i metodi HTTP consentiti (GET, POST, PUT, DELETE, ecc.).Access-Control-Allow-Headers: Inviato dal server in risposta al preflight, indica le intestazioni consentite nella richiesta.Access-Control-Allow-Credentials: Inviato dal server nella risposta, indica se i cookie e altre credenziali sono consentiti nella richiesta.
Esempio di intestazioni di risposta del server che consentono richieste da https://example.com:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS è necessario per il corretto funzionamento di molte applicazioni web che utilizzano richieste AJAX tra domini, come l'interazione con API, il caricamento di font, l'uso di Web Fonts con CDN, ecc. La corretta configurazione di CORS sul server è fondamentale per la sicurezza e la funzionalità dell'applicazione.