Spring MVC とクライアント側の JQuery を使用するアプリケーションに取り組んでいます。クライアント (ポート 80 で実行されている Apache でホストされているページ) によって実行される AJAX 呼び出しは次のようになります。
var login = function() {
$.ajax({
url: "http://localhost:8080/login",
type: 'POST',
data: { key: "value" },
error: function(jqXHR){console.log("Error");}
}).done(function(data, textStatus, jqXHR) {
console.log(jqXHR.responseText);
});
return false;
}
そして、私のサーバー(ポート8080で実行されているTomcat)は次のように設計されています(CORS要件を考慮して):
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public String login(HttpServletResponse response, @RequestBody Map<String,Object> requestParameters){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers", "*");
response.setHeader("Access-Control-Request-Method","*");
String value = (String) requestParameters.get("key");
// Do validation here
}
そして、これは Chrome コンソールに表示されるエラーです。
XMLHttpRequest cannot load http://localhost:8080/login. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
クロス ドメイン ヘッダーを設定しているにもかかわらず、このエラーが発生するのはなぜですか? ここで私が間違っていることを誰かが親切に説明してもらえますか?