Access-Control-Allow-Origin
modifica la protezione offerta all'utente finale in merito a come la Stessa politica di origine gestisce AJAX risposte.
Se un utente è disposto a scherzare con i file host per modificare ulteriormente questa protezione da solo, l'unica cosa che sta compromettendo è la loro stessa sicurezza.
L'intestazione consente a un'altra origine di leggere una risposta AJAX se viene inviata una richiesta di origine incrociata all'origine che emette l'intestazione.
Can I use Access-Control-Allow-Origin: *
instead of
Access-Control-Allow-Origin: http://example.com
? What's the
difference?
La differenza è la prima opzione che consente a qualsiasi origine di leggere le risposte AJAX. La seconda opzione consente solo a http://example.com
di leggere le risposte AJAX.
Se Access-Control-Allow-Credentials
è true, la prima opzione non funzionerà - CORS non ti consentirà di aprire il tuo sito web fino a richieste credenziali globali. In tal caso, e il tuo sito web conteneva informazioni riservate (ad esempio Gmail potrebbe avere una funzione AJAX che restituisce i messaggi nella Posta in arrivo), quindi qualsiasi sito Web visitato da un utente sarebbe in grado di leggere queste informazioni riservate dal tuo sito web nel contesto del sessione dell'utente corrente.
Se davvero desideri che tutte le origini siano in grado di leggere dalla sessione dell'utente corrente, puoi leggere l'intestazione della richiesta Origin
e quindi riflettere questa origine nell'intestazione Access-Control-Allow-Origin
(avendo cura di disinfettare correttamente, naturalmente , rimuovendo CRLF e simili). Ciò equivarrebbe effettivamente all'output di Access-Control-Allow-Origin: *
e a consentire le richieste con credenziali tramite Access-Control-Allow-Credentials
.