CORS (Cross-Origin Resource Sharing) este un mecanism de securitate al browserului care controlează modul în care paginile web pot accesa resurse găzduite pe diferite site-uri web sau domenii.
Acesta permite serverelor să specifice ce site-uri web externe au permisiunea de a solicita resursele lor. Acest lucru contribuie la protejarea utilizatorilor și a aplicațiilor împotriva accesului neautorizat, permițând în același timp comunicarea legitimă între diferite servicii.
CORS este utilizat în mod obișnuit atunci când site-urile web interacționează cu API-uri, servicii externe sau resurse găzduite pe domenii separate.
Cuprins
Ce este o origine?
Înainte de a înțelege CORS, este important să înțelegem conceptul de origine.
O origine este definită de trei elemente:
- Protocol (HTTP sau HTTPS)
- Numele domeniului
- Numărul portului
De exemplu:
https://example.com
și
https://api.example.com
sunt considerate origini diferite deoarece utilizează domenii diferite.
De ce există CORS
Browserele moderne urmează un model de securitate cunoscut sub numele de Politica de aceeași origine.
În mod implicit, o pagină web poate accesa doar resurse din aceeași origine care a servit pagina.
Fără această restricție, un site web rău intenționat ar putea accesa informații sensibile de pe alte site-uri web la care utilizatorul este conectat.
CORS oferă serverelor o modalitate controlată de a relaxa această restricție atunci când este necesar accesul între origini diferite.
Cum funcționează CORS
Când o pagină web încearcă să acceseze o resursă de la o altă origine, browserul trimite o cerere către serverul țintă.
Serverul poate răspunde cu antete HTTP specifice care indică dacă solicitarea ar trebui permisă.
Unul dintre cele mai comune antete este:
Access-Control-Allow-Origin
Acest antet indică browserului ce origini au permisiunea de a accesa resursa.
Dacă serverul permite originea solicitantă, browserul acordă acces la răspuns. În caz contrar, browserul blochează accesul și raportează o eroare CORS.
Solicitări simple și de preflight
Solicitările CORS sunt, în general, împărțite în două categorii.
Solicitări simple
Solicitările simple utilizează metode HTTP standard, cum ar fi:
- GET
- HEAD
- POST
Pentru aceste solicitări, browserul trimite solicitarea direct și apoi verifică dacă serverul permite accesul.
Solicitări de tip Preflight
Unele solicitări necesită o verificare suplimentară înainte de a fi trimise.
În aceste cazuri, browserul trimite mai întâi o cerere preliminară cunoscută sub numele de cerere de preflight, utilizând metoda HTTP OPTIONS.
Serverul răspunde cu informații despre:
- Origini permise
- Metodele HTTP permise
- Anteturile permise
Doar dacă răspunsul permite operațiunea, browserul va trimite cererea propriu-zisă.
Politica Same-Origin vs. CORS
Politica de aceeași origine ≠ CORS
Aceste concepte funcționează împreună, dar au scopuri diferite.
| Politica de aceeași origine | CORS |
|---|---|
| Restricție de securitate a browserului | Mecanism de autorizare |
| Blochează accesul între origini în mod implicit | Permite accesul aprobat între |
| Se aplică automat de către browsere | Se configurează de către server |
| Protejează utilizatorii împotriva accesului neautorizat | Permite comunicarea securizată între servicii |
CORS nu înlocuiește politica de aceeași origine. Oferă excepții controlate de la aceasta.
Cazuri de utilizare frecvente
CORS este utilizat în mod obișnuit pentru:
- Integrări API
- Aplicații cu o singură pagină (SPA)
- Servicii de autentificare externe
- Gateway-uri de plată
- Rețele de distribuire a conținutului (CDN-uri)
- Integrări cu terți
Multe aplicații web moderne se bazează pe CORS pentru a comunica cu servicii externe.
Implicații practice
CORS este în primul rând o funcție de securitate a browserului.
O eroare CORS nu înseamnă neapărat că serverul nu este disponibil. În multe cazuri, aceasta înseamnă că serverul nu a permis în mod explicit originea solicitantă.
Proprietarii de site-uri web și dezvoltatorii pot întâmpina probleme legate de CORS atunci când conectează aplicații la API-uri sau servicii externe. Rezolvarea acestor probleme implică, de obicei, ajustarea configurației CORS a serverului.
Rezumat
CORS (Cross-Origin Resource Sharing) este un mecanism de securitate al browserului care permite serverelor să controleze ce site-uri web externe pot accesa resursele lor. Acesta funcționează împreună cu politica Same-Origin Policy pentru a permite comunicarea securizată între diferite aplicații web, API-uri și servicii, contribuind în același timp la protejarea utilizatorilor împotriva accesului neautorizat.