- CORS (Cross-Origin Resource Sharing)
- Condivisione di Risorse tra Origini Diverse, standard W3C, che permette al server di dichiarare quali origini possono accedere alle risorse tramite nuovi campi di header HTTP, è la soluzione ufficiale dei browser moderni per risolvere problemi cross-origin.
- Politica della Stessa Origine (Same-Origin Policy)
- Meccanismo di sicurezza centrale del browser; solo quando protocollo, dominio e porta sono esattamente uguali si considera stessa origine, e JavaScript di origini diverse di default non può leggere le risorse dell'altro.
- Richiesta Preflight (Preflight Request)
- Richiesta con metodo OPTIONS che il browser invia automaticamente prima per richieste cross-origin non semplici, usata per chiedere al server se permette la richiesta reale successiva; solo dopo aver superato il preflight viene inviata la richiesta vera.
- Richiesta Semplice (Simple Request)
- Richiesta cross-origin che soddisfa condizioni specifiche (metodo GET/HEAD/POST, solo header sicuri, Content-Type specifico), che non ha bisogno di inviare preflight e invia direttamente la richiesta reale.
- Access-Control-Allow-Origin (ACAO)
- Header di risposta CORS principale, specifica l'origine autorizzata ad accedere alla risorsa, può essere un URI di origine specifico o wildcard *, con credenziali non si può usare *.
- Access-Control-Allow-Methods (ACAM)
- Header di risposta preflight, elenca tutti i metodi HTTP supportati dal server, più metodi separati da virgola.
- Access-Control-Allow-Headers (ACAH)
- Header di risposta preflight, elenca tutti i campi di header di richiesta autorizzati dal server; gli header personalizzati inviati dal frontend devono essere dichiarati qui.
- Access-Control-Allow-Credentials (ACAC)
- Header di risposta, valore booleano true indica che è permesso portare credenziali come Cookie e Authorization in richieste cross-origin; in questo caso Allow-Origin non può essere *.
- Access-Control-Max-Age (ACMA)
- Header di risposta preflight, specifica il tempo di cache del risultato preflight in secondi; una configurazione ragionevole può ridurre le richieste OPTIONS migliorando le prestazioni.
- Vary: Origin
- Header di risposta, dice a CDN/proxy che il contenuto della risposta varia in base all'header Origin della richiesta, nel caching deve includere Origin come chiave di cache per evitare disordine di cache delle risposte cross-origin.
- Header di richiesta della lista sicura CORS (CORS-safelisted request headers)
- Header di richiesta che possono essere inviati senza bisogno di dichiararli in Allow-Headers, inclusi Accept, Accept-Language, Content-Language, Content-Type (valori specifici) ecc.
- Nomi di header proibiti (Forbidden header name)
- Header di richiesta che il browser proibisce a JavaScript di impostare tramite programmazione, come Host, Connection, Cookie, Origin ecc.; questi header sono controllati automaticamente dal browser.
- Richiesta con credenziali (Credentialed Request)
- Richiesta cross-origin che porta credenziali di identità come Cookie, informazioni di autenticazione HTTP, certificati client TLS; richiede che frontend e backend configurino congiuntamente withCredentials e Allow-Credentials.
- Access-Control-Expose-Headers
- Header di risposta, elenca gli header di risposta a cui JavaScript può accedere; di default sono accessibili solo pochi header basilari, gli header personalizzati devono essere dichiarati qui.
- Metodo OPTIONS
- Uno dei metodi HTTP, usato per ottenere le opzioni di comunicazione supportate dal server; CORS lo usa per inviare richieste preflight, chiedendo al server i metodi, header, credenziali autorizzati.
- Header di richiesta Origin
- Header di richiesta aggiunto automaticamente dal browser, indica da quale origine proviene la richiesta attuale (protocollo+dominio+porta); il server determina se autorizzare il cross-origin in base a questo header.
- Attributo crossorigin
- Attributo di elementi HTML (come script, img, link), usato per specificare se si abilita il caricamento di risorse con CORS; i valori sono anonymous (senza credenziali) e use-credentials (con credenziali).
- Modalità di richiesta no-cors
- Una mode dell'API fetch, che permette di inviare richieste cross-origin ma può inviare solo richieste semplici e JavaScript non può leggere il contenuto della risposta, equivalente a inviare una richiesta opaca (Opaque Response).