O ten temat zadawano kilka razy, ale nadal czegoś nie rozumiem:
Kiedy czytam odpowiedzi o
Brak nagłówka „Access-Control-Allow-Origin”
kwestia, to mówi ustawienie powinno być ustawione na żądanym serwerem w celu umożliwienia domenę poprzeczny: add_header 'Access-Control-Allow-Origin' '*';
.
Ale proszę powiedz mi, dlaczego, pytając listonosza (który jest klientem), działa jak urok i mam odpowiedź z żądanego serwera?
Dziękuję Ci
Odpowiedzi:
Jak komentuje @Musa, wydaje się, że powodem jest to, że:
Nawiasem mówiąc, tutaj jest rozszerzenie do Chrome , aby działało w Twojej przeglądarce (to jest dla Chrome, ale możesz znaleźć albo FF lub Safari).
Sprawdź tutaj, jeśli chcesz dowiedzieć się więcej o Cross-Origin i dlaczego to działa dla rozszerzeń.
źródło
Jeśli korzystasz z witryny internetowej i wypełniasz formularz w celu przesłania informacji (na przykład numeru ubezpieczenia społecznego), chcesz mieć pewność, że informacje są wysyłane do witryny, do której Twoim zdaniem są wysyłane. Dlatego przeglądarki zostały zbudowane tak, aby domyślnie mówić: „Nie wysyłaj informacji do domeny innej niż odwiedzana domena).
Ostatecznie stało się to zbyt ograniczające, ale domyślny pomysł nadal pozostaje w przeglądarkach. Nie pozwól, aby strona internetowa wysyłała informacje do innej domeny. Ale to wszystko jest sprawdzaniem przeglądarki. Chrome i Firefox itp. Mają wbudowany kod, który mówi: „Przed wysłaniem tego żądania sprawdzimy, czy miejsce docelowe odpowiada odwiedzanej stronie”.
Postman (lub CURL w linii cmd) nie ma tych wbudowanych kontroli. Ręcznie wchodzisz w interakcję z witryną, więc masz pełną kontrolę nad tym, co wysyłasz.
źródło
CORS
(Współdzielenie zasobów między źródłami) iSOP
(Zasady tego samego źródła) to konfiguracje po stronie serwera, które klienci decydują się wymusić lub nie .Powiązane z klientami
CSRF
atakiem.źródło
Chociaż wszystkie odpowiedzi tutaj są naprawdę dobrym wyjaśnieniem, czym są cors, ale bezpośrednia odpowiedź na twoje pytanie byłaby z powodu następujących różnic między listonoszem a przeglądarką.
Przeglądarka: wysyła
OPTIONS
wywołanie, aby sprawdzić typ serwera i pobrać nagłówki przed wysłaniem nowego żądania do punktu końcowego interfejsu API. Gdzie to sprawdzaAccess-Control-Allow-Origin
. Biorąc to pod uwagę,Access-Control-Allow-Origin
nagłówek tylko określa, które wszystkie CROSS ORIGINS są dozwolone, chociaż domyślnie przeglądarka zezwala tylko na to samo źródło.Listonosz: Wysyła bezpośredni
GET
,POST
,PUT
,DELETE
itd. Żądanie bez sprawdzenia, jaki typ serwera jest i uzyskiwanie nagłówkaAccess-Control-Allow-Origin
za pomocąOPTIONS
połączenia z serwerem.źródło
Ogólnie rzecz biorąc, Postman używany do debugowania i używany w fazie rozwoju. Ale jeśli chcesz go zablokować nawet przed listonoszem, spróbuj tego.
źródło
app.js
jeśli używasznode app.js
do uruchamiania serwera.Użyj wtyczki przeglądarki / chrome postman, aby sprawdzić CORS / SOP jak stronę internetową. Zamiast tego użyj aplikacji komputerowej, aby uniknąć tych elementów sterujących.
źródło