Procesarea interogărilor CORS simple
În cel mai simplu caz, interacțiunile interdomeniu încep cu o cerere GET, POST sau HEAD către o resursă de pe server. În acest caz, tipul de conținut al solicitării POST este limitat la aplicația / x-www-form-urlencoded. multipart / formă-date sau text / simplu. Cererea include antetul Origine. care indică originea codului clientului.
Serverul va lua în considerare originea cererii și va accepta sau refuza procesarea cererii. Dacă serverul acceptă solicitarea, acesta va răspunde cu resursa solicitată în antetul Access-Control-Allow-Origin. Acest antet va indica clientului cu ce origine clientul va avea acces la resursă. Având în vedere că Access-Control-Allow-Origin corespunde Originei cererii, browserul va rezolva cererea.
Pe de altă parte, dacă Access-Control-Allow-Origin nu este prezent în răspuns sau dacă nu este în Originea solicitării, browserul nu va accepta solicitarea.
De exemplu, să presupunem că codul clientului este localizat la foo.client.com și trimite o solicitare la bar.server.com:
În plus, Access-Control-Allow-Origin poate fi setat la "*", indicând disponibilitatea pentru toți. Aceasta este considerată o practică nesigură, cu excepția acelor cazuri speciale în care API este complet public și destinat utilizării de către orice client.
Anchete de verificare
Dacă interogarea poate afecta datele utilizatorului, atunci o simplă interogare nu este suficientă. În schimb, cererea prefixată cu CORS este trimisă înainte de a trimite solicitarea solicitată pentru a asigura securitatea solicitării. Chestiunile preflume sunt necesare atunci când se utilizează orice altă metodă HTTP decât GET, POST, HEAD sau dacă tipul de conținut al solicitării POST este diferit de aplicația / x-www-form-urlencoded. multipart / formă-date sau text / simplu. De asemenea, dacă cererea conține oricare dintre anteturile proprii, este necesară o solicitare de prelegere.
De exemplu, să presupunem că un client situat la foo.client.com execută o cerere DELETE către o altă resursă decât bar.server.com. Interogarea de prelegere ia forma solicitarii OPTIONS cu urmatoarele titluri:
Interogarea de verificare prealabilă solicită serverului să afle disponibilitatea solicitării DELETE fără a trimite chiar cererea DELETE. Dacă serverul rezolvă o astfel de solicitare, acesta va răspunde la cererea de verificare după cum urmează:
Răspunsul la cererea de prelegere indică (în antetul Access-Control-Allow-Methods) că clientul este disponibil pentru solicitarea DELETE către resursa transferată. Antetul Access-Control-Max-Age indică faptul că acest răspuns de pre-verificare este de 84600 secunde sau o zi după care trebuie executată o nouă solicitare de prelegere.
În același timp, clientul va putea să trimită cererea curentă DELETE către resursă.
Puteți citi textul original al lecției pe spring.io.