2016-07-04 10 views
0

Ich versuche, die eckige Front-End auf einem Windows 2008 R2 (nicht die Schuld mir), die JAVA REST auf dem gleichen Server aber verschiedene Ports aufrufen. Alles funktioniert gut, wenn ich vom Server stöbere, aber nicht, wenn ich es von einem anderen Computer aus versuche.

Was passiert ist, dass angular versucht, den Server mit localhost vom Client-Computer, nicht den Server aufzurufen. Wenn ich Localhost für die IP-Adresse des Servers ersetzen, funktioniert es von einem anderen Computer in meinem Netzwerk, aber nicht von außen.

Es ist kein CORS oder Firewall (ausgeschaltet) Problem, ich habe bereits versucht, mit Host-Datei, versucht mit IIS und nginx.

Meine Frage ist: -Wie kann ich zwingen, die Anforderungen an localhost "auf dem Server zu bleiben" und nicht der Client ??

+0

vielleicht verstehe ich nicht gut, aber Sie können nicht. eckiger Lauf auf der Client-Seite. Ihre REST API sollte von überall zugänglich sein, wenn sie online ist. Sie müssen dafür sorgen, dass es von außerhalb Ihres Netzwerks funktioniert. Ich denke, es ist Serverproblem, nicht eckig – AlainIb

+0

wahrscheinlich besser fragen auf http://serverfault.com, da dies ein Netzwerkproblem ist – charlietfl

+0

Hey danke für einen Zwischenstopp! Was ich eigentlich dachte, ist, dass es irgendwo eine Konfiguration gab, dass ich dieses Verhalten ändern konnte, wie wir es in Java machen können ... U sehen, ich bin neu in der Front-End-Entwicklung, da ich gerade ein Back-End-Dev bin. –

Antwort

0

Wenn Sie versuchen, die Anwendung eine lokale API aufzurufen (nur für den Server sichtbar), können Sie dies nicht über eine eckige App tun. Wenn Sie die Webseite öffnen, wird die App in Ihrem Browser gestartet. Dies bedeutet, dass der Kontext, den Sie der App zur Verfügung stellen, vollständig öffentlich sein muss und möglicherweise mit einem Token-Zugriff oder ähnlichem gated ist.

Wenn es keine Möglichkeit gibt, dass Sie diesen Java-REST-Dienst öffentlich machen können, so dass die App ihn von überall aufrufen kann, nehme ich an, dass Sie nur einen anderen öffentlichen Dienst haben können, der von eckigen aufgerufen wird app und ruft diesen Java-REST-Endpunkt auf.

Als allgemeine Faustregel sollten Sie daran denken, dass jede App, die Sie aus dem Browser anzeigen können - wenn sie mit async-Javascript-Bibliotheken codiert sind mag eckig/erreichen/knockout etc .. ist im Grunde öffentlich, so der Dienst Aufrufe, die sie machen, können nachvollzogen werden, wobei als serverseitig gerenderte Webseite (asp.net MVC/JSP mit Java) Serveraufrufe tätigen kann und der Client dies nicht sieht.

+0

hey, danke für deine Hilfe und Klärung! Ich dachte, dass ich gerade einen Dienst aufrufen könnte, der in localhost läuft. Es scheint merkwürdig, einen Port in unserer öffentlichen IP dem selben Server zuzuordnen, der die eckige App bedient, weil es, wie du sagtest, ok ist, lokal zu machen Anrufe von Java-Web-Apps ... Ich beginne den kompletten Stack/Micro-Service zu lernen, also muss ich mich an diese spezifische Front-End-Konfiguration gewöhnen ... Ich werde deine Antwort als richtig markieren !!! Danke noch einmal!!! –