当前位置: 首页 > news >正文

开发避坑短篇(4):跨域请求中Session数据丢失的排查与修复方案

异常信息

spring web项目,登录成功后,将用户信息存入session,然后跳转到后台首页再次查询用户信息,通过request.getSession().getAttribute(“userKey”)的方式获取session中的用户信息时,值为空。

异常分析

登录成功后,后端接口通过sendRedirect的方式在内部跳转到后台首页接口,刚开始以为是sendRedirect导致的session丢失,于是在跳转之前对url进行了encodeRedirectURL处理,如下

String encodedUrl = getResponse().encodeRedirectURL(CommonConstants.url);
getResponse().sendRedirect(encodedUrl);

当浏览器禁用Cookie时,该方法会在URL中自动附加;jsessionid=xxx参数(如/path;jsessionid=123),确保会话状态可跟踪‌。若Cookie已启用或无需编码,则返回原URL不变‌。

但是encodeRedirectURL之后还是获取不到。后来用Fiddler监控网络请求,发现跳转前的地址和跳转后的地址不一样,一个是Ip地址,一个是localhost,也就是跨域访问了。

由于浏览器对跨域请求进行了限制,尤其是涉及Session等敏感信息时,会阻止非同源请求访问其他域Session。这是同源策略 (Same-Origin Policy)的安全机制,防止跨站攻击(如CSRF、钓鱼网站等)。

解决办法

将跳转前的地址和跳转后的地址改成一样(http协议、ip地址、端口一致),防止跨域访问。

http://www.dtcms.com/a/293078.html

相关文章:

  • Qt资源系统:如何有效管理图片和文件
  • 【黑马SpringCloud微服务开发与实战】(五)微服务保护
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 访问鉴权功能实现
  • MMDeploy模型转换与TensorRT推理遇到问题及解决方案
  • GRU模型
  • Trae安装指定版本的插件
  • Clickhouse源码分析-副本数据同步
  • 网络编程---TCP协议
  • Spring AI 系列之十九 - Ollama集成Deepseek
  • 配置https ssl证书生成
  • 数字护网:一次深刻的企业安全体系灵魂演练
  • 接口测试用例选择及效能优化策略
  • vcs门级仿真(后仿真)指南
  • 如何处理各行业的DDOS问题?
  • VUE2 学习笔记3 v-on、事件修饰符、键盘事件
  • JAVA后端面试笔记
  • 前端性能优化:从“龟速“到“闪电“的终极加速指南
  • c++day05(ASCII)
  • Git GitHub精通:前端协作开发的“瑞士军刀“!
  • 字符串相关函数
  • visual studio 性能调试
  • 大数据之Hive:Hive中week相关的几个函数
  • 【Java】SVN 版本控制软件的快速安装(可视化)
  • Qt中的栅格布局的核心机制与栅格布局中的元素隐藏后重新排列布局解决方案解析
  • 基于CH32V203F8P6 interface_debug_print支持浮点格式输出
  • 模型优化-------模型压缩
  • Python之格式化Conda中生成的requirements.txt
  • timesFM安装记录
  • JavaWeb学习打卡10(HttpServletRequest详解应用、获取参数,请求转发实例)
  • PyTorch常用工具