У меня есть сервер Nginx перед моим NodeJS на той же машине.
Все HTTP-запросы, включая загрузку файлов через данные граничной формы, отлично работали до сегодняшнего дня. Сегодня мне пришлось установить часть SSL на сервере Nginx, и внезапно все запросы HTTPS перестали работать из-за ограничения CORS.
После того, как я добавил параметр: proxy_set_header 'Content-Type' '*'; , запросы https начинают работать, а файл загрузки - нет.
Итак, в NodeJS, когда я читаю req.files, пуст. Я использую express -fileupload. Если я сделаю запрос через http, работает отлично.
Я провел буквально целый день, пытаясь найти решение.
Пожалуйста, дайте совет. Спасибо.
Server {
listen 80;
server_name devapi.example.co;
client_max_body_size 100M; #100mb
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000;
proxy_set_header 'Access-Control-Allow-Origin' '*';
proxy_set_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS';
proxy_set_header 'Access-Control-Expose-Headers' 'x-token';
proxy_set_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Accept,x-access-token,Authorization,skip';
}
}
server {
listen 443 ssl;
# listen [::]:443 ssl http2;
server_name *.example.co;
client_max_body_size 100M; #100mb
# Certificate
ssl_certificate /etc/nginx/ssl/chain_co.crt;
# Private Key
ssl_certificate_key /etc/nginx/ssl/private-key.key;
# charset utf-8;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header 'Access-Control-Allow-Origin' '*';
proxy_set_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS';
proxy_set_header 'Access-Control-Expose-Headers' 'x-token';
proxy_set_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Accept,x-access-token,Authorization,skip';
proxy_set_header 'Content-Type' '*';
# proxy_set_header Accept-Encoding '';
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection 'upgrade';
# proxy_cache_bypass $http_upgrade;
# proxy_redirect off;
# proxy_set_header X-Forwarded-Proto https;
}
}
РЕДАКТИРОВАТЬ: Думаю, проблема не в SSL, а в Nginx. Потому что в localhost работает отлично, но когда я ставлю Nginx перед NodeJS, не получается. Возникает вопрос: как правильно установить content-type?