Как отправлять запросы API на сервер через JSON? Продолжайте получать ошибки CORS

Я использую ReactJs и Axios для отправки запросов API на свой сервер, но все равно получаю ту же ошибку:

Failed to load http://***: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 400.

Я пытаюсь выполнить POST-запрос. Я также попытался загрузить плагин Chrome, чтобы разрешить CORS. Он работал для запросов GET, но, похоже, не работал для POST.

Если я попытаюсь сделать запросы к https://jsonplaceholder.typicode.com/users, он будет работать нормально. Думаю, что с сервером что-то не так.

Мой сервер использует Nginx и работает под управлением ОС CentOS 7.

Вопрос: Как можно включить CORS только для моей локальной разработки (localhost) или определенных веб-сайтов?

Обновлено: Я уже пробовал использовать эту конфигурацию на моем сервере Nginx - безуспешно: https://enable-cors.org/server_nginx.html

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
90
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Хотя я не могу ответить вам конкретным кодом, вот что происходит (по крайней мере, то, что произошло в прошлый раз, когда я пробовал Angular и имел аналогичные проблемы):

Перед отправкой любых дальнейших запросов на URL-адрес сервера будет отправлен HTTP-запрос OPTIONS, содержащий только заголовок. При ответе на этот вызов сервер должен отправить поле заголовка Access-Control-Allow-Origin, содержащее белый список доменов, которым разрешено выполнять дальнейшие вызовы с использованием API. Чтобы внести в белый список все запросы в среде разработки, достаточно настроить Nginx для ответа с помощью Access-Control-Allow-Origin: *.

Для разработки я использую расширение Firefox CORS везде. Он изменяет весь веб-трафик, чтобы включить правильные заголовки CORS. (Он работает, по крайней мере, с несколько устаревшим Firefox в Opensuse 42.3.)

https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

Обратите внимание, что это подрывает механизм безопасности браузера.

Для развертывания необходимо настроить сервер для отправки правильных заголовков CORS. (Я этого никогда не делал, готовый сайт планируется работать на едином IP.)

Если у вас есть доступ к серверу и сервер использует Nodejs, это должно сработать для вас:

CD в ​​папку вашего сервера:

cd server-folder

Затем запустите эту команду, чтобы установить пакет cors:

npm install cors

Чтобы получить доступ к этому пакету, перейдите в файл сервера в своей среде IDE и в следующей доступной строке:

const cors = require('cors');

Затем добавьте эту строку, чтобы использовать промежуточное ПО (при условии, что вы используете Express):

app.use(cors());

Другие вопросы по теме