CORS
Skrót od „Cross-Origin Resource Sharing”. CORS umożliwia skryptom na stronach internetowych żądanie zasobów z innych domen. Większość przeglądarek internetowych domyślnie blokuje tego typu żądania ze względów bezpieczeństwa.
Strona internetowa może żądać zasobów z innej domeny — pod warunkiem że żądania pochodzą z kodu HTML. Na przykład sekcja <head> może odwoływać się do zasobów, takich jak pliki CSS, czcionki i pliki JS z innych domen. Przykładami są skrypty Google Analytics, biblioteki jQuery oraz czcionki przechowywane na innym serwerze. Podobnie sekcja <body> może żądać obrazów z CDN-u lub innej domeny. Żądania zasobów z innych źródeł zawarte w kodzie HTML nie wymagają uprawnień CORS.
Gdy skrypt lub element iframe wysyła żądanie do innego źródła, wymagany jest CORS. Na przykład metoda AJAX — która uruchamia się po załadowaniu strony — nie może żądać zasobu z innej domeny. CORS nadpisuje to domyślne ustawienie przeglądarki i umożliwia realizację żądania.
CORS jest implementowany za pomocą nagłówków HTTP „access control”. Administrator serwera może dodawać lub modyfikować nagłówki odpowiedzi, które są wysyłane do przeglądarki klienta podczas uzyskiwania dostępu do strony internetowej. Te ustawienia, które można zastosować do serwerów Apache i IIS, mogą dotyczyć konkretnej witryny lub całego serwera. Poniżej przedstawiono typowe nagłówki żądań i odpowiedzi:
Nagłówki żądań CORS:
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
Nagłówki odpowiedzi CORS:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
Przykład CORS
Jeśli skrypt na stronie techterms.com żąda zasobu z witryny sharpened.com za pomocą żądania GET, może wysłać następujące nagłówki żądania:
Origin: https://techterms.com
Access-Control-Request-Method: GET
Aby zezwolić na żądanie, witryna sharpened.com może odpowiedzieć za pomocą następujących nagłówków:
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin można ustawić dla konkretnych domen lub użyć symbolu wieloznacznego w postaci gwiazdki (*). Ustawienie symbolu wieloznacznego umożliwia żądania zasobów z innych źródeł ze wszystkich domen, co może stanowić zagrożenie dla bezpieczeństwa. Access-Control-Allow-Methods można ustawić na PUT, POST, DELETE i inne metody, w tym użyć ustawienia z symbolem wieloznacznym (*), które zezwala na wszystkie metody.
Sprawdź swoją wiedzę