Ich habe ziemlich viel gesucht und noch immer keine Lösung für mein Problem gefunden ...
Wir haben eine NodeJS-Anwendung, die eine Express-Anwendung ist, die eine REST-API auf localhost:3000 verfügbar macht. Wir haben auch eine AngularJS-Anwendung, die erstellt (ng build --prod) und dann von Nginx bereitgestellt wird. Auf einem lokalen Computer funktioniert alles einwandfrei. Wenn ich sie in Produktion bringe, kann die Angular-Anwendung auf keinen der API-Endpunkte zugreifen.
Zunächst dachte ich, dass es sich um ein CORS-Problem handeln könnte, daher habe ich meine Nginx-Konfiguration wie folgt angepasst:
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';
}
}
}
Das hat das Problem nicht gelöst. In keinem der Nginx-Protokolle sind Informationen enthalten und ich kann erfolgreich über curl auf die REST-API zugreifen, wenn ich beim Server angemeldet bin. Ich stecke fest. Jede Hilfe ist willkommen.
Antwort1
Wie sich herausstellt, kann Angular localhost nicht auflösen, aber die Verwendung von 127.0.0.1 funktioniert problemlos.