IntelliJ IDEAに静的Web角度プロジェクトがあります。静的ページはhttp://localhost:63342/Calculator/app/index.html
に展開されます。私は戻って応答を取得するために、サーバーにいくつかのデータを投稿しようが、私は投稿しようとしたとき、私はこのエラーを取得する問題に遭遇している:ここでIntelliJスタティックWebプロジェクトからTomcatまたはAngular CORへ
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.
は私のポストの角度コードです:
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*/
});
};
私は、私が別のポートで実行していたアプリケーションのローカルURLで試したので、ポストが動作するという事実を知っています。
私はlocalhostから投稿できないので、これをtomcatサーバーに配備することで問題が解決するかどうか疑問に思っていました。もしそうなら、この静的なWebプロジェクトをtomcatサーバーにどのように配備しますか?それが必要でないなら、私はこの問題をどうやって回避するのですか?
私は何の呼び出しもしていないので、設定を変更することはできません。しかし、私はこの同じapiを呼び出すTomcatサーバーに展開する起動春のJavaアプリケーションを起動していますが、それはlocalhostでも動作します。唯一のことは、春の 'postForObject'呼び出しを使用することです。なぜ私の角のあるアプリでは動作しませんか? – Richard
春の呼び出しはサーバー側で行われませんか?サーバーは何かを呼び出すことができます。 CORSはあなたの*ブラウザ*からリクエストできないことを伝えています。 – Jorg
ああそうです。ハァッ。だから、すべてのWebアプリケーションがこの問題を回避する方法は、apiを呼び出すtomcatスクリプトにリクエストをプロキシすることです。彼らは私のようなapiを制御できないと仮定します。 – Richard