Na czym polega CORS
Domyślnie przeglądarki blokują wiele żądań między różnymi originami (origin = protokół + domena + port). Oznacza to, że aplikacja działająca pod jednym adresem nie może swobodnie odczytywać odpowiedzi API z innej domeny.
CORS pozwala serwerowi jawnie określić, które originy mogą uzyskać dostęp do zasobu. Robi to przez nagłówki HTTP, takie jak Access-Control-Allow-Origin, Access-Control-Allow-Methods i Access-Control-Allow-Headers.
Typowe scenariusze
- frontend w React lub Vue pobiera dane z osobnego API,
- zewnętrzna aplikacja komunikuje się z API platformy,
- widget osadzony na stronie odwołuje się do zasobów z innej domeny.
Preflight request
Dla bardziej złożonych żądań przeglądarka najpierw wysyła zapytanie OPTIONS, aby sprawdzić, czy serwer zezwala na daną operację. To tak zwany preflight request.
Najczęstsze błędy
- ustawienie
Access-Control-Allow-Origin: *tam, gdzie wymagane są dane wrażliwe, - brak obsługi żądań
OPTIONS, - zbyt szerokie dopuszczenie metod i nagłówków.