У меня на сервере запущено два приложения.
Изначально я использовал SSL-сертификат с подстановочными знаками для обоих поддоменов, а nodejs заботился о CORS. Но тогда от нас потребовали использовать отдельные SSL-сертификаты для обоих доменов. Когда я использовал отдельные сертификаты SSL, Nginx начал отклонять запросы cors (я мог использовать API с помощью почтальона).
Затем я прочитал о параметрах Nginx cors в некоторых сообщениях здесь и придумал следующие настройки Nginx
/ и т.д. / nginx / сайты-доступные / по умолчанию
# Vendor API
server {
listen 5511 ssl;
ssl_certificate /ssl/ssl-bundle-api.crt;
ssl_certificate_key /ssl/ssl-api.key;
location /{
include /etc/nginx/shared/allow-cors;
proxy_pass http://localhost:4511;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
}
}
# Retailer app
server {
listen 5512 ssl;
ssl_certificate /ssl/ssl-bundle-react.crt;
ssl_certificate_key /ssl/ssl-react.key;
location /{
proxy_pass http://localhost:4512;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Ssl on;
}
}
/ и т. д. / nginx / общий / разрешить корс
if ($request_method = "OPTIONS") {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Methods 'DELETE,GET,OPTIONS,POST,PUT' always;
add_header Access-Control-Allow-Headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With,X-Token-Auth,X-Mx-ReqToken,X-Requested-With' always;
add_header 'Access-Control-Max-Age' 1728000 always;
add_header 'Content-Type' 'text/plain charset=UTF-8' always;
add_header 'Content-Length' 0 always;
return 204;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Methods 'DELETE,GET,OPTIONS,POST,PUT' always;
add_header Access-Control-Allow-Headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With,X-Token-Auth,X-Mx-ReqToken,X-Requested-With' always;
Затем я удалил настройки cors из API nodejs. Похоже, это полностью устранило проблему с моим экземпляром aws ec2 ubuntu 18.04. Но когда я развертываю этот код на локальном сервере клиента (созданном с использованием образа моего экземпляра ec2), у него снова возникают проблемы. В Firefox кажется, что предполетная проверка получает ожидаемые 204, но тогда я не вижу отправленных запросов POST.
В Chrome я вижу успешную предполетную проверку с 204. Я также вижу фактический запрос POST в Chrome, но с (failed) net::ERR_FAILED
положение дел.