Nessuna richiesta di preflight viene effettuata durante la richiesta di cross-origine XHR

0

Ho creato una richiesta di cross-origine XHR da un file html, ospitato su un semplice HTTP Server python.

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.facebook.com/favicon.ico", true);
xhr.withCredentials = true;
xhr.onload = function () {
    console.log(xhr.responseText);
};
xhr.send();

Apro Strumenti per sviluppatori di Chrome e guardo le richieste tramite la scheda Rete . Nella scheda Rete vedo una singola richiesta diretta fatta al server "facebook.com".

Icomportamentichehotrovatoinsolitierano:

  1. SperavodivedereunarichiestadipreflightprimachelarichiestaXHRdirettafossefatto,secondoladocumentazionemenzionataqui: link

  2. La richiesta ha ricevuto un codice di stato: * 200 ** che è insolito. SOP dovrebbe blocca questo tipo di richiesta poiché si tratta di una richiesta interdominio.

Tuttavia, nella scheda Console di Strumenti per sviluppatori di Chrome , vedo il comportamento previsto:

    
posta aka_007 28.02.2017 - 09:28
fonte

1 risposta

1

Una richiesta di verifica preliminare per verificare le intestazioni CORS viene eseguita solo se la richiesta eseguita con XHR non può essere raggiunta senza XHR. Nel tuo caso stai semplicemente facendo una semplice richiesta GET senza intestazioni speciali che potrebbero essere fatte anche includendo un'immagine con lo stesso URL o simile. Quindi la richiesta non deve essere sottoposta a preflight.

Per maggiori dettagli quali richieste sono considerate "semplici" e non vengono verificate e quali richieste non sono semplici vedi Richieste di verifica preliminare nella documentazione di CORS su Mozilla Developer Network.

    
risposta data 28.02.2017 - 09:42
fonte

Leggi altre domande sui tag