根据浏览器的保护规则,跨域时候的SeeionId是不会被保存下来,即我们的每次Ajax请求都会是一个新的请求,都会产生新的SeesionId,后台自然不能根据前台传过来的SeesionId判断你是否处于登录状态。
我们可以对前台的Ajax以及后台进行相应的修改,就可以对上述问题进行完美解决:
一:前端Ajax请求
$.ajax({
url:url,
xhrFields: {
withCredentials: true // 加上此部分
},
crossDomain: true, // 加上此部分
success:function() {
},
error:function() {
}
});
二:Controller部分代码
@RequestMapping(value="XXXX.do")
@ResponseBody
public String XXXXX( HttpServletRequest request, HttpServletResponse response){
// 解决跨域
response.addHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));
// 跨域的session 保证同一性
response.addHeader("Access-Control-Allow-Credentials","true");
///
somecode
///
网友评论