2016-07-09 15 views
0

Ich habe eine Spring Boot MAVEN-Anwendung geschrieben, die auf embedded Tomcat-Server (Port: 8080) läuft. Ich habe einen anderen NodeJS Express-Server auf Port 8000. Jetzt, von Port 8000, habe ich den Port 8080 Proxy. So, jede Adresse "http://localhost:8080/ *" wird mich auf den Code in Spring-Boot-Anwendung. Ich teste dies, indem ich den Haltepunkt an der erforderlichen Stelle in der Spring-Boot-Anwendung belasse.XMLHttpRequest kann nicht geladen werden

Aber nach dem Code im Frühjahr Boot ausgeführt wird, bin ich

XMLHttpRequest cannot load http://localhost:8080/users/?_=1468052674994. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. 

"/ users /" ist Mapping meiner Anfrage im Boot-App Frühjahr bekommen.

Ich habe gerade erfahren, dass ich den Port 8080 zum Host "EXPOSIEREN" soll. https://www.wouterdanes.net/2014/04/11/continuous-integration-using-docker-maven-and-jenkins.html Oben Artikel besagt, dass Docker dies tun kann. Ich habe nicht viel verstanden, um damit anzufangen. Kann mir bitte jemand helfen.

Antwort

1

Das XMLHttpRequest wird von Browsern verwendet, um Ajax-Anforderungen zu erstellen. Um Missbrauch vorzubeugen, verwenden Browser eine 'Same Origin Policy', um das Laden von Ressourcen von verschiedenen Standorten als die Seite zu verhindern, die die Anfrage verursacht. Gleiche IP, aber mit verschiedenen Ports, wie in Ihrem Fall, wird auch als "verschiedene Standorte" behandelt.

Sie können dieses Problem mithilfe spezieller Header auf der Seite lösen, auf der die Anforderung geladen wird. Dies kann sehr kompliziert klingen, aber es ist verständlich bei

Same-origin_policy und Cross-origin_resource_sharing

Lösung

Die erste Antwort, mit der Seite erklärt, dass die XMLHttpRequest machen, muss ein gehören Kopfzeile:

Zugriffssteuerung-Erlauben-Ursprung: http://localhost:8080

0

Spring Rest API kam zu meiner Rettung. @CrossOrigin (origins = "http://localhost:8000") Annotation zum Controller löste das Problem. Dieser Code wird in allen Controllern wiederholt. Immer noch die effiziente Lösung finden.