关于Ajax异步请求的跨域以及Session问题

2019-05-31  本文已影响0人  hbhey

根据浏览器的保护规则,跨域时候的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
///

参考https://www.cnblogs.com/renhaisong/p/6892341.html

https://blog.csdn.net/z_sk789/article/details/51460173

上一篇 下一篇

猜你喜欢

热点阅读