1. 程式人生 > >跨域 Access-Control-Allow-Origin

跨域 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);
  }
 }

同樣的程式碼,只是不同的專案,所以出現此問題!