Доступ к выборке был заблокирован политикой CORS.У него нет статуса HTTP ok - PullRequest
0 голосов
/ 19 декабря 2018

Итак, я создаю приложение реагирования, которое извлекает данные JSON из API весенней загрузки, созданного мной.

Вот код для метода извлечения:

componentDidMount() {
        fetch(`http://localhost:8080/students`, {
            headers : {
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            }

        })
            .then((response) => response.json())
            .then((data) => this.setState({students: data}));

        console.log(this.state.students);
    }

Однако, когда я запускаю программу, она выдает мне сообщение об ошибке:

Access to fetch at 'http://localhost:8080/students' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Может ли кто-нибудь мне помочь

1 Ответ

0 голосов
/ 19 декабря 2018

Я не на 100% знаком с Spring Boot, но общее решение этой проблемы заключается в том, чтобы убедиться, что ваша служба отвечает заголовком Access-Control-Allow-Origin, который соответствует origin (localhost в вашем примере), если онэто не тот же источник, что и у вашего сервиса.

Добавление "Access-Control-Allow-Origin": "*" сделает это для ваших целей разработки.В производственной среде вы, вероятно, хотите более точно указать, с какими источниками на самом деле разрешены.

Просмотрите этот ресурс для получения дополнительной информации о CORS: https://enable -cors.org /

Это та же самая политика происхождения, реализованная в вашем браузере, которая вызывает это.Он указывает, что браузер должен разрешать сценариям на одной веб-странице доступ к ресурсам на другой, но только если они происходят из одного источника.Если это не так, вы можете указать, что они разрешены, указав заголовок, который я упомянул выше.Вам также может понадобиться указать разрешенные глаголы и заголовки, в зависимости от того, что вы делаете.

...