Ce este CORS?
sobes.tech AI
Răspuns de la AI
CORS (Cross-Origin Resource Sharing) — este un mecanism care permite paginilor web să solicite resurse de la un alt domeniu, port sau protocol diferit de cel de pe care a fost încărcată pagina. Acest lucru se face prin intermediul antetelor HTTP suplimentare.
În mod implicit, browserele aplică politica Same-Origin Policy (SOP), care interzice scripturilor executate pe o pagină să acceseze date dintr-o altă sursă (domeniu, port, protocol). CORS relaxează această politică într-un mod controlat, permițând serverului să declare explicit ce solicitări între domenii sunt permise.
Cum funcționează CORS:
- Solicitare simplă: Dacă solicitarea îndeplinește anumite criterii (de exemplu, se folosește metoda GET sau POST, sunt permise doar anumite antete), browserul trimite solicitarea direct cu un antet suplimentar
Origincare indică sursa solicitării. Serverul, primind acest antet, poate răspunde cuAccess-Control-Allow-Originindicând sursa permisă. - Preflight: Pentru solicitări "ne simple" (de exemplu, cu metode
PUT,DELETE, sau cu antete personalizate), browserul trimite mai întâi o solicitare preliminară (OPTIONS). Aceasta întreabă serverul dacă solicitarea principală este permisă. Serverul răspunde cu antete care indică metodele, anteturile și sursele permise. Dacă preflight-ul reușește, browserul trimite solicitarea efectivă.
Antetele principale CORS:
Origin: Trimite de către browser în solicitare, indicând sursa (domeniu, port, protocol) a paginii care face solicitarea.Access-Control-Allow-Origin: Trimite de către server în răspuns, indicând sursa care poate primi răspunsul. Poate fi un domeniu specific,*(orice sursă), sau generat dinamic pe baza antetuluiOrigin.Access-Control-Allow-Methods: Trimite de către server în răspuns la preflight, indicând metodele HTTP permise (GET, POST, PUT, DELETE etc.).Access-Control-Allow-Headers: Trimite de către server în răspuns la preflight, indicând anteturile permise în solicitare.Access-Control-Allow-Credentials: Trimite de către server în răspuns, indicând dacă se permit cookie-urile și alte date de autentificare în solicitare.
Exemplu de antete de răspuns ale serverului, care permit solicitări de la https://example.com:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS este necesar pentru funcționarea corectă a multor aplicații web care utilizează solicitări AJAX între domenii, cum ar fi interacțiunea cu API-uri, încărcarea fonturilor, utilizarea Web Fonts cu CDN etc. Configurarea corectă a CORS pe server este crucială pentru securitate și funcționalitate.