Cross-Origin Resource Sharing
CORS regola l’accesso del browser alle risposte di un’altra origine. Non sostituisce l’autenticazione né il controllo delle autorizzazioni nell’API.
Consentire a un’altra origine di leggere le risposte
Cross-Origin Resource Sharing, o CORS, è un meccanismo basato su intestazioni HTTP. Il server indica da quali altre origini il codice nel browser può accedere alle sue risposte. Un’origine comprende protocollo, host e porta. La regola è applicata dal browser; CORS non è un accesso autenticato all’API.
Distinguere portale e API
Un portale fittizio su https://portal.example vuole leggere dati di progetto da https://api.example/projects. L’API può autorizzare l’origine del portale con Access-Control-Allow-Origin. In base a metodo e intestazioni, il browser chiede prima con OPTIONS se la chiamata effettiva è consentita. Il controllo preliminare si chiama preflight; non avviene per ogni chiamata.
Per altre chiamate la richiesta può già raggiungere il server, anche se il browser poi non rende la risposta leggibile allo script. Un errore CORS non dimostra quindi che sul server non sia accaduto nulla.
Se vanno inviati cookie di sessione, devono essere coerenti anche le impostazioni delle credenziali. Queste risposte richiedono un’origine esplicita invece del carattere jolly *; conta anche Access-Control-Allow-Credentials. Le regole del browser sui cookie continuano a valere. Indipendentemente, l’API verifica identità e diritti sui dati richiesti.
Fonti
Termini correlati
- Same-origin policy (SOP)La same-origin policy limita gli accessi del browser tra origini diverse. Un percorso di pagina diverso non crea da solo una nuova origine.
- Cross-site request forgery (CSRF)CSRF sfrutta una sessione aperta per una richiesta indesiderata. Il cookie di sessione da solo non dimostra che la persona volesse eseguire l’azione.
- Cookie SameSiteSameSite influisce sull’invio dei cookie tra siti. La scelta deve adattarsi ad accesso e navigazione; resta necessaria la protezione CSRF.
- Server-Sent EventsSSE trasmette notifiche testuali dal server al client via HTTP, per esempio sull’avanzamento di un lavoro in background.
- ETagUn ETag identifica una specifica versione della rappresentazione di una risorsa HTTP e consente letture o modifiche condizionali.
- Electronic Data InterchangeEDI trasferisce documenti aziendali strutturati fra sistemi. Formato, profilo del partner, corrispondenze dei dati e risposte devono essere coerenti.
Il vostro progetto con ASES
Descriveteci il vostro progetto. Vi ricontatteremo con una prima valutazione.