Czym jest CORS?
sobes.tech AI
Odpowiedź od AI
CORS (Cross-Origin Resource Sharing) — to mechanizm umożliwiający stronom internetowym żądanie zasobów z innej domeny, portu lub protokołu, różniącego się od tego, z którego załadowano samą stronę. Odbywa się to za pomocą dodatkowych nagłówków HTTP.
Domyślnie przeglądarki stosują politykę Same-Origin Policy (SOP), która zabrania skryptom działającym na jednej stronie dostępu do danych z innego źródła (domena, port, protokół). CORS łagodzi tę politykę w kontrolowany sposób, umożliwiając serwerowi wyraźne zezwolenie na żądania międzydomenowe.
Jak działa CORS:
- Proste żądanie: Jeśli żądanie spełnia określone kryteria (np. używa metody GET lub POST, dozwolone są tylko niektóre nagłówki), przeglądarka wysyła żądanie bezpośrednio z dodatkiem nagłówka
Origin, wskazując źródło żądania. Serwer, otrzymując ten nagłówek, może odpowiedzieć nagłówkiemAccess-Control-Allow-Origin, wskazującym dozwolone źródło. - Preflight: Dla "nieprostych" żądań (np. z metodami
PUT,DELETElub z niestandardowymi nagłówkami), przeglądarka najpierw wysyła wstępne (preflight) żądanieOPTIONS. To żądanie pyta serwer, czy można wysłać główne żądanie. Serwer odpowiada nagłówkami wskazującymi dozwolone metody, nagłówki i źródła. Jeśli preflight zakończy się sukcesem, przeglądarka wysyła właściwe żądanie.
Główne nagłówki CORS:
Origin: Wysyłany przez przeglądarkę w żądaniu, wskazuje źródło (domena, port, protokół) strony inicjującej żądanie.Access-Control-Allow-Origin: Wysyłany przez serwer w odpowiedzi, wskazuje źródło, które może otrzymać odpowiedź. Może to być konkretna domena,*(dowolne źródło) lub dynamicznie generowane na podstawie nagłówkaOrigin.Access-Control-Allow-Methods: Wysyłany przez serwer w odpowiedzi na preflight, wskazuje dozwolone metody HTTP (GET, POST, PUT, DELETE itp.).Access-Control-Allow-Headers: Wysyłany przez serwer w odpowiedzi na preflight, wskazuje dozwolone nagłówki żądania.Access-Control-Allow-Credentials: Wysyłany przez serwer w odpowiedzi, wskazuje, czy można akceptować pliki cookie i inne dane uwierzytelniające w żądaniu.
Przykład nagłówków odpowiedzi serwera, zezwalających na żądania z 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 jest niezbędny do poprawnego działania wielu aplikacji internetowych korzystających z żądań AJAX między domenami, takich jak interakcje API, ładowanie fontów, korzystanie z Web Fonts z CDN itp. Prawidłowa konfiguracja CORS na serwerze jest kluczowa dla bezpieczeństwa i funkcjonalności aplikacji.