Domyślnie CORS nie uwzględnia plików cookie w żądaniach między źródłami. Różni się to od innych technik pochodzących z różnych źródeł, takich jak JSON-P. JSON-P zawsze zawiera pliki cookie z żądaniem, a to zachowanie może prowadzić do pewnej klasy luk zwanej fałszowaniem żądań między lokacjami lub CSRF.
Aby zmniejszyć prawdopodobieństwo wystąpienia luk CSRF w CORS, CORS wymaga, aby zarówno serwer, jak i klient potwierdzili, że umieszczanie plików cookie w żądaniach jest w porządku. Dzięki temu pliki cookie stają się aktywną decyzją, a nie czymś, co dzieje się biernie bez żadnej kontroli.
Kod klienta należy ustawić withCredentials
właściwość na XMLHttpRequest
celu true
, aby dać zgodę.
Jednak sam ten nagłówek nie wystarczy. Serwer musi odpowiedzieć Access-Control-Allow-Credentials
nagłówkiem. Odpowiedź za pomocą tego nagłówka true
oznacza, że serwer zezwala na dołączanie plików cookie (lub innych danych uwierzytelniających użytkownika) do żądań z innych źródeł.
Musisz również upewnić się, że Twoja przeglądarka nie blokuje plików cookie innych firm, jeśli chcesz, aby żądania uwierzytelniające z różnych źródeł działały.
Pamiętaj, że niezależnie od tego, czy wysyłasz żądania z tego samego, czy z różnych źródeł, musisz chronić swoją witrynę przed CSRF (zwłaszcza jeśli żądanie zawiera pliki cookie).