Ich habe ein statisches Web-eckiges Projekt in IntelliJ IDEA. Die statische Seite wird auf http://localhost:63342/Calculator/app/index.html
bereitgestellt. Ich habe auf ein Problem stoßen, wo ich versuche, einige Daten an einen Server senden eine Antwort zurück zu bekommen, aber wenn ich versuche ich diesen Fehler zu schreiben bekommen:IntelliJ Statisches Webprojekt zu Tomcat oder Angular CORs
XMLHttpRequest cannot load <url>. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. The response had HTTP status code 401.
Hier ist mein Beitrag Winkel Code:
WebIdServer.prototype.getId = function(id) {
var _this = this;
var request = {
method: 'POST',
url: 'https://<url>,
headers: {
'Authorization':'Bearer QWE234J234JNSDFMNNKWENSN2M3',
'Content-Type':'application/json',
},
data: {
id:id
}
};
_this.$log.debug(request);
return _this.$http(request)
.success(function(data, status, headers, config){
_this.$log.debug("Successfull request.");
/*called for result & error because 200 status*/
_this.uid = data.id;
_this.$log.debug(_this.uid);
})
.error(function(data, status, headers, config){
_this.$log.debug("Something went wrong with the request.");
_this.$log.debug(data);
/*handle non 200 statuses*/
});
};
Ich weiß für eine Tatsache, dass Post funktioniert, weil ich es auf einer lokalen URL meiner Anwendung ausprobiert habe, die ich auf einem anderen Port ausgeführt hatte.
Also meine Frage ist, da ich nicht von localhost posten kann, habe ich mich gefragt, ob vielleicht Bereitstellung dieses zu einem Tomcat-Server Dinge beheben würde. Wenn ja, wie stellen Sie dieses statische Webprojekt auf einem Tomcat-Server bereit? Wenn das nicht notwendig ist, wie komme ich dann zu diesem Problem, das ich habe?
Ich habe keinen Zugang zu der API, die ich anrufe, so dass das Ändern einer seiner Einstellungen nicht in Frage kommt.Aber ich habe eine Spring-Boot-Java-Anwendung, die ich auf einem Tomcat-Server bereitstellen, der das gleiche API aufruft und es funktioniert, obwohl es auch auf localhost ist. Einzige Sache ist, dass es den 'postForObject'-Aufruf von spring verwendet. Warum funktioniert es dort aber nicht in meiner eckigen App? – Richard
Ist der Frühlingsanruf nicht serverseitig gemacht? Server können alles anrufen. CORS ist Ihr * Browser *, der Ihnen mitteilt, dass Sie die Anfrage nicht bearbeiten können. – Jorg
Oh ich sehe. Huh. Die Art, wie alle Web-Apps dieses Problem umgehen, besteht darin, dass sie ihre Anfrage an ein Tomcat-Skript weiterleiten, das die API aufruft. Vorausgesetzt, sie haben keine Kontrolle über die genannte API wie ich. – Richard