Odpowiedź od @Saalin jest najbliższa prawdy.
@FrontendGuy: W Twoim poście:
Jeśli zrobisz *
to z każdej domeny będziesz mógł puszczać requesty na Twoje endpointy. Zapewne widzisz, że na produkcji nie jest to pożądany efekt.
napisałeś to z każdej domeny będziesz mógł puszczać requesty na Twoje endpointy
, co nie jest prawdą - bo requesty możesz puszczać zawsze z wszędy. To jest popularny błąd w rozumieniu CORS, że ten header blokuje requesty. Ludzie dodają header - ich apka zaczyna działa - więc dochodzą do wnisoku że to header musiał zablokować request (co jest oczywiście bzdurą).
Jeśli o tym nie wiedziałeś, to @Saalin słusznie zwrócił Ci uwagę. Jeśli jednak o tym wiedziałeś, to powinieneś napisać to przeglądarka użytkownika przepuści request webowy na Twoje endpointy
, bo Twoja wypowiedź wprowadza w błąd.
Dla sprostowania:
- Jeśli klient jest w tej samej domenie co serwer - wszystko jest OK (spełnione Same Origin Policy)
- Jeśli klient jest w innej domenie to żeby pobrać zasoby z serwera nasza domena musi znajdować sie w nagłowku 'Access-Control-Allow-Origin'
- Jeśli klient jest w innej domenie niż serwer i domena nie znajduje się w nagłówku 'Access-Control-Allow-Origin' to dostajemy CORS
Nic nie sprostowałeś, bo nadal mogę napisać klienta który będzie robił requesty i całkowicie olewał CORS, i żaden header nic tu nie pomoże.
Jeśli chcesz być pomocny, to musisz dodać w swoim sprostowaniu informację o tym że to PRZEGLĄDARKA blokuje te requesty w gestii usera, i to tylko przeglądarka która ma zaimplementowane CORS i ma je włączone.
Łatwo możesz wyłączyć CORS w np w Google Chrome uruchamiając go z flagą --disable-web-security
i wtedy chrome nie sprawdzi żadnych headerów i przepuści każdy request.
Błąd który popełniasz @FrontendGuy to nie bierzesz pod uwagę, że istnieją inne klienty niż przeglądarki, i można wysłać request inaczej niż fetch()
/AJAX. Jeśli zamkniesz swoje myślenie że przeglądarki to jedyne możliwe klienty (czyt. wszystkie możliwe klienty mają wbudowane i włączone CORS), to wychodzą właśnie takie kwiatki.