跨域请求,关于后端session会话丢失的解决办法
2016-11-28 09:38
856 查看
达人科技 2016-11-26 13:32
目前使用前后端分离的模式开发,后端提供跨域接口、前端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参数值
目前使用前后端分离的模式开发,后端提供跨域接口、前端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参数值
相关文章推荐
- 跨域请求,关于后端session会话丢失的解决办法
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
- iframe跨域cookies和Session丢失问题的解决办法
- 关于微信小程序发起的请求不能使用session的解决办法
- nodejs——关于jquery的put、delete ajax请求在后端无法解析请求变成options的解决办法
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
- 关于c# SESSION丢失问题解决办法
- 关于CSRF跨域请求伪造的解决办法
- 关于c# SESSION丢失问题解决办法[转]
- PHP关于IE下的iframe跨域导致session丢失问题解决方法
- iframe跨域Session丢失问题的解决办法
- PHP关于IE下的iframe跨域导致session丢失问题解决方法
- 关于c# SESSION丢失问题解决办法
- vue前后端分离使用fetch 跨域请求时 session失效问题解决
- 关于c# SESSION丢失问题解决办法
- iframe跨域访问session丢失问题解决办法
- PHP关于IE下的iframe跨域导致session丢失问题解决方法
- 关于ASP.NET开发中session丢失的解决办法(学习笔试)
- 关于c# 删除文件夹时SESSION丢失问题解决办法
- Frame中关于Session丢失的解决方法!