Я использую 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





Хотя я не могу ответить вам конкретным кодом, вот что происходит (по крайней мере, то, что произошло в прошлый раз, когда я пробовал 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());