Próbowałem fetch
otworzyć adres URL starej witryny i wystąpił błąd:
Fetch API cannot load http://xyz.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://abc' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.
Zrozumiałem wiadomość i próbowałem wykonać żądanie, które zwraca nieprzejrzystą odpowiedź:
fetch("http://xyz", {'mode': 'no-cors'})
Ok, teraz działa ... ale nie mogę tego przeczytać. = \
Jaki jest zatem cel nieprzejrzystej odpowiedzi?
Status code
zawsze jest0
, jak sprawdzić, czy się udało, czystatus is never 200
?Nieprzezroczyste odpowiedzi nie są dostępne w języku JavaScript, ale nadal można je buforować za pomocą interfejsu Cache API i odpowiadać za ich pomocą w
fetch
module obsługi zdarzeń w module Service Worker. Są więc przydatne do przełączania aplikacji w tryb offline, także w przypadku zasobów, których nie możesz kontrolować (np. Zasoby w sieci CDN, która nie ustawia nagłówków CORS).źródło
Jest też rozwiązanie dla aplikacji Node JS. CORS Anywhere to serwer proxy NodeJS, który dodaje nagłówki CORS do żądania proxy.
Adres URL do serwera proxy jest dosłownie pobierany ze ścieżki, sprawdzany i przekazywany przez serwer proxy. Część protokołu proxy URI jest opcjonalna i domyślnie ma wartość „http”. Jeśli określono port 443, domyślnym protokołem jest „https”.
Ten pakiet nie nakłada żadnych ograniczeń na metody http ani nagłówki, z wyjątkiem plików cookie. Żądanie danych logowania użytkownika jest niedozwolone. Aplikację można skonfigurować tak, aby wymagała nagłówka do przekazywania żądania, na przykład w celu uniknięcia bezpośrednich odwiedzin z przeglądarki. https://robwu.nl/cors-anywhere.html
źródło
javascript jest trochę trudne w uzyskaniu odpowiedzi, naprawiłem to, pobierając interfejs API z zaplecza, a następnie wywołując go do interfejsu użytkownika.
źródło