Cors nginx

Cors nginx

„Udostępnianie zasobów krzyżowych jest znane przez akronimowe CORS. Gdy ktoś działa w innej domenie, serwer użyje tej metody do kontrolowania dostępu do swoich usług. Dzieje się to w środku serwera i przeglądarki. Za pomocą nagłówków HTTP Access-Control-Request-* przeglądarka przesyła niektóre dane. Na podstawie otrzymanych nagłówków serwer decyduje, co wysłać jako nagłówki kontroli dostępu. Przeglądarka jest teraz świadoma swojej zdolności lub niemożności dostępu do zasobów serwerów. Przeglądarka może czasami wykonać przed lotem, który jest walidacją, zanim złożył rzeczywiste żądanie. Nagłówek nie można zmienić za pomocą kodu front-end w przeglądarce. Nagłówki mogą być modyfikowane przez kod po stronie serwera. Jednak należy go wykonać przez usługę niższą, której aplikacja nie widzi, taka jak brama API lub serwer HTTP.

Pytania HTTP krzyżowe wykonane przez scenariusze są ograniczone przez przeglądarki pod kątem problemów bezpieczeństwa. Na przykład zasada tej samej pochodzenia jest przestrzegana zarówno do API Fetch, jak i xmlhttprequest. Oznacza to, że aplikacja internetowa wykorzystująca te interfejsy API może składać żądania zasobów z pochodzenia, z którego została załadowana, chyba że odpowiedź innych źródeł ma odpowiednie nagłówki CORS."

Wyzwalacze i rodzaje żądania CORS

Ponieważ zasoby są często hostowane w tym samym źródle co aplikacja internetowa, nie wszystkie żądania powodują żądanie CORS. CORS jest aktywowany, jeśli jest inaczej. Proste żądania i CORS wstępnie wyprzedzone żądania to dwie różne formy żądań CORS.

Proste żądania CORS

Gdy użytkownik inicjuje proste żądanie, ich przeglądarka internetowa przesyła żądanie do serwera. Serwer następnie analizuje źródło żądania, analizuje je do swoich reguł i podaje żądane zasoby, jeśli pasuje. Ten typ żądania wykorzystuje nagłówki pochodzenia i kontroli dostępu-control-aligin, aby zdecydować, czy zasób należy dostarczyć. Jedynymi typami żądań, które doprowadzą do prostego żądania, są zdobycie, głowa i post, a także nagłówki, takie jak akceptacja, DPR, w dół, link, zapisywanie data, treści, w języku treści, szerokość rzutni i szerokość i Szerokość. Nawet jednak nie wszystkie typy treści powodują proste żądanie. Tutaj tylko niektóre formy kodowania formularzy powodują proste żądanie.

Zmawki z wyprzedaży

Wcześniejsze żądania są nieco inne, ponieważ nie ma natychmiastowego połączenia z usługami w początkowej rundzie. Prośba wstępnie wyprzedzona jest inicjowana, gdy warunki zostaną w jakiś sposób zmieniane, na przykład, wykorzystując zmodyfikowany nagłówek żądania lub alternatywny typ treści. W żądaniach wstępnie wyprzedzonych wyszukiwarka najpierw potwierdza, że ​​może uzyskać dostęp do zasobu, odpowiadając przeglądarce internetowej, a gdy przeglądarka internetowa odpowiada odpowiedzią Okay (HTTP 200), następnie wysyła kolejne żądanie nabycia zasobu. Po pierwsze, prosimy o użycie metody opcji HTTP, a następnie pobiera zasoby za pomocą typów żądań podobnych do metod Get i Post.

Warunek CORS w Nginx

Po pierwsze, 4xx odpowiedzi są niezgodne ze standardową dyrektywą NGINX Dodaj nagłówek. Im więcej Set Headers Dyrektywa, która również funkcjonuje z odpowiedziami 4xx, może być użyta do dodawania do nich niestandardowych nagłówków, ale aby to zrobić, musimy najpierw zainstalować moduł nagłówków Nginx.

Pakiet Nginx-Extras można łatwo zainstalować, jeśli korzystasz z dystrybucji Debiana, pomimo rekomendacji dokumentacji, aby zbudować Nginx ze źródła za pomocą modułu:

Znaczenie włączania CORS na Nginx

Wykonanie JavaScript w przeglądarce klienta zazwyczaj nie musi uzyskiwać dostępu do usług poza jej domeną. W rezultacie wyłączenie CORS może być mądrym środkiem bezpieczeństwa.

Jednak aby taka funkcjonalność funkcjonowała na zapleczu, CORS musi być włączony. Wynika to z faktu, że legalny kod JavaScript może czasami wymagać przekazania żądania do serwera poza jego domeną. Oddzielny protokół, nazwa domeny lub port może być nazywany tą samą domeną.

Jak włączyć CORS na Nginx w Ubuntu 20.04

Przejdźmy do głównej części. Otwórz preferowany edytor, VIM, a następnie przejdź do konfiguracji Nginx:

Wprowadź następny wpis w bloku serwera konfiguracji Nginx.

Po tym ponownie uruchom Nginx, a następnie zapisz plik konfiguracyjny.

CORS można włączyć za pomocą polecenia Curl do weryfikacji. Z tego następujące wyniki powinno wynikać z tego:

Jak radzić sobie z błędami CORS w severach

Strona serwera jest miejscem, w którym zaimplementuje się CORS; strona klienta nie może zmienić sposobu, w jaki to działa. Użytkownikom można uniknąć korzystania z wspólnych zasobów za pomocą zachowania CORS, często znanego jako błąd CORS. To nie jest błąd, ale raczej mechanizm bezpieczeństwa w celu ochrony ciebie lub witryny, którą odwiedzasz po potencjalnym naruszeniu bezpieczeństwa. Wdrożenie nagłówków HTTP, które są nieodpowiednie lub niepoprawne, może spowodować ten problem (e.G., brakujące klucze API i inne informacje o autoryzacji). Mamy kilka unikalnych rozwiązań tych błędów.

  • Prośby o przełomowe można składać za pomocą proxy CORS. Twoje żądanie jest przekazywane przez warstwę proxy, która jest ślepa na jej pochodzenie. W związku z tym, mimo że żądanie pochodzi z niezidentyfikowanego pochodzenia, CORS Proxy renderuje go tak, jakby pochodzi z dozwolonej lokalizacji.
  • Wykorzystanie funkcji bez serwera jest bardziej popularnym środkiem zaradczym. Jest to inne podejście do zaspokojenia twoich żądań, ale pomimo opisanego powyżej podejścia możesz utworzyć swoją mikroinfrastrukturę, aby uzyskać dostęp do usługi internetowej i przesyłać dane do punktu końcowego API.

Wniosek

Głównym celem CORS jest zapewnienie aplikacji online bezpieczniej. CORS może być jeszcze korzystny. Ponieważ nie jest to domyślnie włączone, CORS musi być włączony w tej sytuacji. Dzięki zastosowaniu dyrektyw pochodzenia i kontroli dostępu-aligin, które są jedynymi typami żądań używanych przez podstawowy typ żądania CORS, Nginx może zapewnić zgodę przeglądarki internetowej w celu uzyskania dostępu do żądanego zasobu w oparciu o pochodzenie. CORS to świetne narzędzie, które należy dokładnie wykorzystać w obu przypadkach.