edytuj 13.09.2018 : dodano pewne szczegóły dotyczące tej prośby przed lotem i sposobu jej uniknięcia na końcu tej odpowiedzi.
OPTIONS
żądania są tym, co nazywamy pre-flight
żądaniami Cross-origin resource sharing (CORS)
.
Są one niezbędne, gdy wysyłasz żądania z różnych źródeł w określonych sytuacjach.
To żądanie przed lotem jest wysyłane przez niektóre przeglądarki jako środek bezpieczeństwa, aby upewnić się, że wykonane żądanie jest zaufane przez serwer. Oznacza to, że serwer rozumie, że metoda, pochodzenie i nagłówki wysyłane na żądanie są bezpieczne.
Twój serwer nie powinien ignorować, ale obsłużyć te żądania za każdym razem, gdy próbujesz wykonać żądania krzyżowego pochodzenia.
Dobry zasób można znaleźć tutaj http://enable-cors.org/
Jednym ze sposobów radzenia sobie z nimi w celu zapewnienia wygody jest upewnienie się, że dla dowolnej ścieżki z OPTIONS
metodą serwer wysyła odpowiedź z tym nagłówkiem
Access-Control-Allow-Origin: *
To powie przeglądarce, że serwer jest gotów odpowiedzieć na żądania z dowolnego źródła.
Aby uzyskać więcej informacji na temat dodawania obsługi CORS na serwerze, zobacz poniższy schemat blokowy
http://www.html5rocks.com/static/images/cors_server_flowchart.png
edycja 2018-09-13
OPTIONS
Żądanie CORS jest uruchamiane tylko w niektórych przypadkach, jak wyjaśniono w dokumentach MDN :
Niektóre żądania nie wyzwalają inspekcji wstępnej CORS. Są to tak zwane „proste żądania” w tym artykule, chociaż specyfikacja Fetch (która definiuje CORS) nie używa tego terminu. Żądanie, które nie uruchamia inspekcji wstępnej CORS - tak zwane „proste żądanie” - to takie, które spełnia wszystkie następujące warunki:
Jedynymi dozwolonymi metodami są:
Oprócz nagłówków ustawianych automatycznie przez agenta użytkownika (na przykład Connection, User-Agent lub dowolny z innych nagłówków o nazwach zdefiniowanych w specyfikacji Fetch jako „zabroniona nazwa nagłówka”), jedynymi nagłówkami, które mogą być ręcznie ustawione są te, które specyfikacja Fetch definiuje jako „nagłówek żądania zabezpieczonego przez CORS”, które są:
- Zaakceptować
- Zaakceptuj język
- Język treści
- Typ zawartości (ale zwróć uwagę na dodatkowe wymagania poniżej)
- DPR
- Łącze w dół
- Zapisz dane
- Szerokość rzutni
- Szerokość
Jedynymi dozwolonymi wartościami nagłówka Content-Type są:
- application / x-www-form-urlencoded
- multipart / form-data
- Zwykły tekst
Żadne detektory zdarzeń nie są zarejestrowane w żadnym obiekcie XMLHttpRequestUpload używanym w żądaniu; są one dostępne za pomocą właściwości XMLHttpRequest.upload.
Żądanie nie zawiera obiektu ReadableStream.