Cors nginx и nodejs - PullRequest
       5

Cors nginx и nodejs

0 голосов
/ 24 июня 2018

Я использую ReactJS на стороне клиента и NODEJS на бэкэнде, а nginx в качестве обратного прокси. Мой файл nginx выглядит следующим образом.

server{
            listen 80;
            server_name www.trusting.com;
            location / {

                    proxy_set_header 'Access-Control-Allow-Origin' 'http://localhost:3000';
                    proxy_set_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
                    proxy_set_header 'Access-Control-Allow-Headers' 'X-Requested-With,Accept,Content-Type, Origin';

                    proxy_pass http://localhost:8080;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection 'upgrade';
                    proxy_set_header Host $host;
                    proxy_cache_bypass $http_upgrade;





        }


    }

Даже при том, что CORS включен на nginx, я получаю ошибку на стороне ReactJS при выполнении вызовов REST.

Failed to load http://www.trusting.com/hey/signup: Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

1 Ответ

0 голосов
/ 24 июня 2018

Согласно документации , proxy_set_header прикрепляет заголовок к запросу. При этом запрос еще не поступил в ваше приложение nodeJS.

Что вам нужно сделать, это прикрепить заголовок к ответу . Для этого вам нужно использовать директиву add_header:

server {
        listen 80;
        server_name www.trusting.com;
        location / {

            add_header 'Access-Control-Allow-Origin' 'http://localhost:3000' always;
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
            add_header 'Access-Control-Allow-Headers' 'X-Requested-With,Accept,Content-Type, Origin' always;

            proxy_pass http://localhost:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...