跨域 Access-Control-Allow-Origin
今天遇到一個問題,所有的程式碼都一樣,只是不同的專案,折騰了快一天了也沒發現什麼問題,原因卻是跨域了。
解決方案:
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);
}
}
同樣的程式碼,只是不同的專案,所以出現此問題!