我正在研究在客户端使用Spring MVC和JQuery的应用程序。通过我的客户执行的AJAX调用(托管在端口80上运行的Apache网页)看起来像这样:XHR错误:访问控制 - 允许来源不允许访问http:// localhost
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;
}
而且我的服务器(Tomcat的端口8080上运行)设计如下(考虑到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.
尽管设置跨域头,那为什么我得到这个错误?有人能够解释我在这里做错了吗?
对不起,也许我没能在这个问题清楚了,我同时运行两个服务器。 AJAX请求在Apache服务器(在端口80上运行)上产生,并且在Tomcat服务器上运行(在端口8080上运行)。 – Vishnu