Per iniziare, un ORIGIN è composto da Protocol + ResourcePath + Port, quindi http: // è diverso da https: //.
Il motivo per cui il protocollo è incluso nell'origine è perché il documento / risorsa è servito, potenzialmente, da un sistema completamente diverso. HTTPS utilizza la porta 443 per impostazione predefinita, la porta HTTP 80 per impostazione predefinita. Inoltre, anche se è possibile trasferire un file di testo in chiaro tramite FTP (porta 21) HTTP (porta 80), HTTP (porta 443) ecc. Ecc., Ciascuno di questi protocolli dispone di protezioni e controlli molto diversi.
Le preoccupazioni per la sicurezza derivano principalmente dalle domande sulla provenienza. Grossa parola, lo so. Ciò significa, semplicemente, che il contenuto servito sulla porta 443 è NOTO che è stato originato dal luogo che lo ha detto. Ha un certificato per dimostrarlo, quel certificato è legato ad un particolare nome di dominio, e se non sono stati eseguiti shenaningans e il metodo è stato usato correttamente, puoi essere sicuro che il contenuto pubblicato su HTTPS provenisse da chi te lo aspettavi vieni da
Questo non è lo stesso per il contenuto proveniente dalla porta 80 via HTTP. Infatti, HTTP è stato progettato per consentire ai punti intermedi di memorizzare nella cache e, in effetti, modificare i dati sulla sua strada.
A causa di queste differenze, il contenuto offerto da diversi protocolli è visto all'interno di domini di fiducia separati, che non si fidano necessariamente della sicurezza dell'altro. Ad esempio, supponiamo che tu visualizzi una pagina web che serve contenuti tramite HTTPS (HTML) e contenuti tramite HTTP (script e immagini pubblicitari). L'origine incrociata impedisce agli oggetti di fiducia (pubblicità) inferiori di leggere contenuti attendibili più elevati (il saldo del tuo conto bancario).
CORS, nel suo nucleo (haha) ritorna al modello Bell - La Padula che è ampiamente utilizzato oggi per separare le autorizzazioni di bassa sicurezza da interazioni di alta sicurezza.