Błąd CORS - fetch()

0

Witam, mam problem z błędem CORS:

const czasArr = [];
const temparatura1Arr = [];

const tempEle = document.querySelector(".temp");
const czasEle = document.querySelector(".czas");

const ctx = document.getElementById("myChart").getContext("2d");

fetch("http://192.168.1.37:8080/Temperatura.JSON")
   .then(response => {
       if (!response.ok) {
           throw new Error("HTTP error " + response.status);
       }
   return response.json();})
  .then((data) => {
    data.forEach(({ czas, temperatura }) => {
      czasArr.push(czas);
      temparatura1Arr.push(temperatura);
    });
  })
  .then(() => {
    //tempEle.innerText = temparatura1Arr;
    //czasEle.innerText = czasArr;
    setData(czasArr, temparatura1Arr);
  })
  .catch((err) => {
    //console.log(err);
  });

function setData(x, y) {
  const myChart = new Chart(ctx, {
    type:"line",
    data: {
        labels: x,
        datasets: [{
            label: 'Wykres zależności Temperatury od czasu',
            data: y,
            backgroundColor:[
              'black'
            ],
            borderColor: [
              'red'
          ],
            
            borderWidth: 1
        }],
    },
    options: {
      scales: {
        y: {
            beginAtZero: false
        }
        }
    }
});
}

Na stronie "http://192.168.1.37:8080/Temperatura.JSON" posiadam lokalnie udostępniony plik z czasem i temperatura. Niestety wyświetla mi się błąd:
screenshot-20211214131310.png

Czytając poradniki zainstalowałem wtyczkę Moesif origin, ale z tego co wiem ona jest tylko tymczasowym rozwiązaniem (Przy jej użyciu wszystko działa) Niestety nie umiem zaimplementować odpowiednio poradników z internetu. Czy mógłbym prosić o wskazówki?

0

Co jest pod http://192.168.1.37? Aplikacja webowa? Gdzie udostępniasz plik json?

2

Rozumiesz w ogóle czym jest CORS? Za pewne odpytywanie tego adresu jest możliwe z konkretnych miejsc w aplikacji.

0

@bakunet: Pod tym adresem znajduję się moja strona internetowa , tam chciałbym wyświetlić ten plik który pobieram z ;http://192.168.1.37:8080/Temperatura.JSON; ( wrzuciłem go tam przy użyciu apache tomcat).

@ledi12: Z tego co mi się wydaje, jest to zabezpieczenie.

////EDIT
Przy pomocy tej strony [https://enable-cors.org/server_tomcat.html] , starałem się wyłączyć to zabezpiecznie podanymi tam komendami które wkleiłem do pliku /etc/tomcat8/web.xml .

a poleceniami:

sudo service tomcat8 stop ,sudo service tomcat8 start - Zresetowałem aplikacje .
Niestety wyśweitla się ten sam błąd. Czy może w moim kodzie jest gdzieś wina, czy czegoś po prostu nie rozumiem.

0
Filmixyy napisał(a):

@bakunet: Pod tym adresem znajduję się moja strona internetowa

Co to za strona? W jakiej technologii? Jakiś serwis? Wiesz jak zmienić na tej stronie / aplikacji ustawienia CORS?

0

Strona z aplikacją w JS jest pod innym adresem niż serwer, do którego się odwołujesz. Problem można rozwiązać na dwa sposoby. Albo ustawisz sobie proxy (np. proxy_pass w Nginx) na serwerze z aplikacją JS i będziesz przepuszczał do niego ruch z aplikacji klienckiej, albo na serwerze Web API z którego korzystasz konieczne jest dodanie specjalnych nagłówków zob. Cross-Origin Resource Sharing (CORS). Użycie proxy to prostsze i lepsze rozwiązanie.

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