1. 程式人生 > >前端訪問後臺介面每次產生新的session

前端訪問後臺介面每次產生新的session

公司專案中前後端分開開發,前端訪問後臺介面時產生ajax跨域問題以及每次訪問介面時的session都是不一樣的問題,記錄下來備忘(後臺用的jfinal框架,前端用vue開發)

參考 http://blog.csdn.net/qq_27373459/article/details/77099207 

建立一個攔截器攔截所有請求 :

public class AjaxIntercepter implements Interceptor {
@Override
public void intercept(Invocation inv) {
HttpServletResponse response = inv.getController().getResponse();
HttpServletRequest request = inv.getController().getRequest();

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));  
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
response.setHeader("Access-Control-Max-Age", "0");  
response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token,Access-Control-Allow-Headers");  
response.setHeader("Access-Control-Allow-Credentials", "true");  
response.setHeader("XDomainRequestAllowed","1"); 

        inv.invoke(); //新增攔截器的 放行方法
       
}
}

           


在前端的ajax請求中新增紅色程式碼可解決ajax,session 跨域問題

$.ajax({ url:url, //加上這句話 xhrFields: {            withCredentials: true        },        crossDomain: true,
success:function(result){ alert("test"); }, error:function(){ } });

這樣前端訪問後臺介面時sessionId 將保持同一個,方便我們將使用者資訊儲存在session中