retrocompatibilità.
Già nei giorni precedenti era possibile inviare richieste HTTP da JavaScript, non era necessario che i server web controllassero da quale sito era originata una richiesta, quindi non l'hanno fatto. Quando JavaScript ha acquisito questa capacità, doveva essere implementato in modo da non compromettere la sicurezza dei siti Web esistenti. Pertanto, i browser si sono assunti la responsabilità di assicurarsi che i dati di un sito Web non fossero accessibili da un altro sito. (Le richieste AJAX di origine incrociata semplicemente non funzionerebbero.)
Successivamente è stato deciso che questa politica era troppo restrittiva e quindi è stato creato lo standard CORS (Cross-Origin Resource Sharing). Ancora una volta, questo standard doveva essere retrocompatibile con i server esistenti e quei server non controllavano ancora l'intestazione Origin
. Perché dovrebbero? I browser impedivano già l'accesso incrociato ai dati del sito automaticamente; non c'era bisogno di un controllo separato. Pertanto, CORS ha dovuto richiedere ai siti di optare esplicitamente per l'accesso incrociato a una pagina specifica. Richiedere un opt-out (rifiutando la richiesta se l'intestazione Origin
è errata) interromperà di nuovo la sicurezza dei siti esistenti. Così è nata l'intestazione Access-Control-Allow-Origin
.
Nonostante la compatibilità con le versioni precedenti, c'è comunque un vantaggio significativo nel non richiedere ai server di controllare l'intestazione Origin
. L'accesso incrociato richiede un opt-in che garantisce che sviluppatori e server Web non compromettano accidentalmente la propria sicurezza non convalidando adeguatamente l'intestazione Origin
. È sicuro per impostazione predefinita piuttosto che "non sicuro a meno che non si assicuri che questa particolare intestazione sia impostata sul valore corretto".