[聚合文章] 跨域请求,关于后端session会话丢失的解决办法

JSONP 2016-11-26 13 阅读

目前使用前后端分离的模式开发,后端提供跨域接口、前端 jsonp调用,绑定数据,但是在该站点下有个人中心模块存在的情况下,服务端的 session会话会被跨域请求覆盖改掉

大家都知道 tomcat使用 cookie中 jsessionid来区分客户端 session会话

跨域请求接口恰恰有时候响应回来回改变该站点下的 jsessionid值,导致服务器每次判断都是一个新的会话

以网站个人中心模块来说,每一个跨域 jsonp请求,都会 Response 一个 cookie值, SET-COOKIE:JSESSIONID=XXXX,如下图:

再看服务端,前端刷新一次也没,后端服务会话 id都不是同一个 sessionid,所有后端所有的请求都是未登录,这就导致前端发送的请求,后端无法拿到当前个人用户信息

目前服务端部署都采用 tomcat,所以修改办法是在 conf/context.xml文件中,设置 sessionId的 cookieName别名,不和默认的 jsessionid一直,如下:

最终修改好后,再看服务器的 cookie值,服务端使用 session取的 cookie值是刚刚设置的别名 cookie值 SHGJSESSIONID,所以不受跨域接口影响

最终服务端请求的 session会话能保证是同一个,所以也能取到当前登录的个人信息

更多 tomcat参数设置值请参考    tomcat-context 参数值

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。