目前使用前后端分离的模式开发,后端提供跨域接口、前端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参数值

转载于:https://www.cnblogs.com/xiaoymin/p/6104018.html

跨域请求,关于后端session会话丢失的解决办法相关推荐

  1. 跨越请求,关于后端session会话丢失的解决办法(转载)

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

  2. 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)

    利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ...

  3. 【安全牛学习笔记】CSRF跨站请求伪造攻击漏洞的原理及解决办法

    CSRF跨站请求伪造攻击漏洞的原理及解决办法 CSRF,夸张请求伪造漏洞 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理:浏览器同源策略 3.DEMO 4.漏洞危害 5.如何避免&修复 ...

  4. Ajax跨域请求保证同一个session的问题

    根据浏览器的保护规则,跨域的时候我们创建的sessionId是不会被浏览器保存下来的,这样,当我们在进行跨域访问的时候,我们的sessionId就不会被保存下来,也就是说,每一次的请求,服务器就会以为 ...

  5. ASP.NET 2.0中的Session状态丢失的解决办法

    ASP.NET 2.0引进了不让脚本使用的HttpOnly的cookie,,通过客户端脚本执行的某些操作可能会使session丢失. 解决办法:在global.asax中设置HttpOnly属性为Fa ...

  6. ajax 请求_前端后分离Ajax跨域请求保证Session一致

    JAVA码牛牛,程序员学习指南 前后端分离的项目,使用Ajax请求一般都出现跨域的问题. 跨域的时候所创建的session是不会被浏览器保存下来的.所以每次进行跨域请求时,服务器都认为不是同一个浏览器 ...

  7. php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...

    php前后端分离开发中要实现前后端参数信息交互,必须解决token标识验证问题. 步骤如下: 1.前端ajax发送请求时,要设置一个自定义header头.代码如下: $.ajax({ url:&quo ...

  8. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决使用elementUI框架el-upload跨域上传时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload跨域上传时session丢失问题 (2)https: ...

  9. 易语言做后端 实现跨域请求

    首先说下原理: 解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 1 ...

最新文章

  1. 数据库_数据库篇-第一章:数据库基本概念
  2. python流程控制-python 流程控制语句
  3. 理解Android Binder机制(3/3):Java层
  4. 微服务架构设计模式 pdf_六种常用的微服务架构设计模式之一: 入门级模式...
  5. ubuntu将GNU nano换成vim
  6. IIS7.5配置对PHP的支持
  7. 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
  8. 实验二《Java面向对象程序设计》实验报告
  9. spring中的BeanFactory和FactoryBean的区别与联系
  10. COMSOL数据导入的案例
  11. search_web_resources
  12. 显卡更新显示计算机无法识别,电脑无法识别独立显卡
  13. python读取定位_如何使用python定位和读取Data Matrix代码
  14. TextClock 24小时制
  15. JavaScript实现在线进制转换工具网站 -toolfk程序员工具网
  16. 最长公共子序列(LCS)的C++实现
  17. 三、nginx服务的nginx.conf的参数配置解析
  18. 倒计时H5页面源码(2018年除夕)
  19. iOS开发icon图标设置
  20. 52单片机与MH-Sensor-Series模块使用简单检测车轮转速

热门文章

  1. 一个发送短信验证码 然后倒计时实例
  2. alexa http 请求
  3. BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊
  4. python版本升级及pip部署方法
  5. 符号隔开数字求最大值
  6. 如何在Spring和Spring MVC项目中进行测试
  7. MacBook Air 使用技巧
  8. 模块化编程AMDCommonJS
  9. (转)#Pragma用法
  10. 构造一个日期类java_Java8 新日期时间类(1)