błąd podczas zwracania promise

0

Witam chciałem odpalic fetch i zwrocic promise w konsoli

fetch("https://api.....")
    .then(response => {
        console.log(response);
    })

Ale wywala mi taki bład.. czy to wina serwera?
Access to fetch at 'https://api.....' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
GET https://api.... net::ERR_FAILED
Uncaught (in promise) TypeError: Failed to fetch

1

Masz dwie opcje, albo użyjesz jakiegoś proxy albo w serwerze zmienisz politykę CORS.
Bardziej bezpieczne jest użycie proxy, ale to już twój wybór :)
PS. Jeśli twoja aplikacja używa create-react-app możesz sprawdzić ten link https://create-react-app.dev/docs/proxying-api-requests-in-development/

3

Otrzymałeś błąd Cross-Origin Resource Sharing. Ze względu na bezpieczeństwo, przeglądarki wymagają aby cała aplikacja korzystała z tego samego źródła (origin) czyli np. tej samej domeny. Jeżeli tworzysz aplikację lokalnie (widzę w komunikacie, że uruchamiasz ją na localhost:3000) i próbujesz się połączyć z zewnętrznym api, to zawsze otrzymasz ten błąd. Dzieje się tak dlatego, że orgin Twojej aplikacji jest localhost, a Ty próbujesz się połączyć z jakąś inną domeną. To normalne i nie jest to żaden błąd serwera.

W celu ominięcia tego problemy wystarczy, że zainstalujesz w swojej przeglądarce wtyczkę np. Allow CORS i będziesz ją włączał na czas tworzenia aplikacji. Tylko pamiętaj, żeby ją wyłączyć, ponieważ jeżeli jest cały czas uruchomiona może wpływać na działanie innych stron i aplikacji w Twojej przeglądarce.

0

Dziękuję za odpowiedzi, problem z CORS zniknął po zainstalowaniu wtyczki Allow CORS ale wciąż zostały 2 błedy wyrzucane przez konsole:
GET https://Api.... net::ERR_CONNECTION_TIMED_OUT
Uncaught (in promise) TypeError: Failed to fetch
Nie wiem czy ze swojej strony mogę jakoś to naprawić czy to jednak wina backendu..

0

Czy po wrzuceniu linku w przeglądarce albo w postmanie zwraca wynik?

0

Postman wyswietla komuniakt:
Could not get any response
There was an error connecting to https://dearjean.ddns.net:44300/api/Routes.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General

Natomiast przegladarka:
Ta witryna jest nieosiągalna Serwer dearjean.ddns.net potrzebował zbyt wiele czasu na odpowiedź.
Wypróbuj te rozwiązania:

Sprawdź połączenie
Sprawdź serwer proxy i zaporę sieciową
Uruchom Diagnostykę sieci systemu Windows
ERR_CONNECTION_TIMED_OUT

Takze pewnie to wina serwera...

0

W takim wypadku backend nie działa albo ewentualnie oczekuje na login i hasło, ale nie odpowiada żadnym błędem. Czasami tak zabezpieczają, tzw. security by obscurity.

1 użytkowników online, w tym zalogowanych: 0, gości: 1