He buscado bastante y todavía no he encontrado una solución que funcione para mi problema...
Tenemos una aplicación NodeJS que es una aplicación Express que expone una API REST en localhost:3000. También tenemos una aplicación AngularJS que se construye (ng build --prod) y luego se sirve mediante Nginx. En una máquina local, todo funciona bien. Cuando lo puse en producción, la aplicación Angular no puede acceder a ninguno de los puntos finales de la API.
Información de encabezados XHR
Salida de la consola del desarrollador
Inicialmente, pensé que esto podría ser un problema de CORS, así que ajusté mi configuración de Nginx para que quedara de la siguiente manera:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
}
}
Eso no resolvió el problema. No hay información en ninguno de los registros de Nginx y puedo acceder con éxito a la API REST a través de curl cuando inicio sesión en el servidor. Estoy atascado. Se agradece cualquier ayuda.
Respuesta1
Resulta que Angular no puede resolver localhost, pero usar 127.0.0.1 funciona bien.