今天遇到一个问题,所有的代码都一样,只是不同的项目,折腾了快一天了也没发现什么问题,原因却是跨域了。
解决方案:
httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");//跨域
页面js请求信息:
jQuery(function($) {
$("#login").click(function(){
$.ajax({
url:'http://10.16.122.26:8002/iaf-platform-web/doLogin',
type:'POST',
data:{
'loginName':$("[name=username]").val(),
'userPassword':$("[name=password]").val()
},
crossDomain:true,
dataType :'json',
success : function(data) {
if(data.result=='success'){
window.location.href="../homepage/listMain.html";
}else{
$("#loginMsg").html('<i class="ace-icon icon-exclamation-sign"></i> '+data.msg).show();
}
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("ajax失败!");
}
});
});
});
Controller方法:
@RequestMapping(value="/doLogin", method=RequestMethod.POST)
public void login(HttpServletRequest request, HttpServletResponse arg1, Model model){
try {
clearSessionAttributes(request.getSession());
String loginName=request.getParameter("loginName");
String userPassword=request.getParameter("userPassword");
LoginResult loginResult = loginService.doLogin(loginName,userPassword);
SysUser user = loginResult.getSysUser();
if(user!=null){
UserContextImpl userContext = new UserContextImpl();
userContext.setSysUser(user);
if(user.getAgencyId()!=null){
SysAgency agency = agencyService.getAgency(user.getAgencyId());
if(agency!=null){
userContext.setSysAgency(agency);
}
}
WebUtils.setSessionAttribute(request, "userContext", userContext);
WebUtils.setSessionAttribute(request, USER_SESSION_KEY, createJsonUserContext(userContext));
}
arg1.setHeader("Access-Control-Allow-Origin", "*");//跨域
arg1.getWriter().write(JSONObject.fromObject(loginResult).toString());
} catch (Exception e) {
e.printStackTrace();
throw new LoginException("登录失败!", e);
}
}
同样的代码,只是不同的项目,所以出现此问题!