请求路径上带有或出现jsessionid的处理办法

  • 问题示例
  • 解决办法
    • 一.新建拦截器或过滤器,项目中已有拦截器或者过滤器的,想复用也可以
    • 二.在拦截器```preHandle```方法中进行处理
  • 问题诱因

问题示例

请求路径中带有;jsessionid=xxx等字符串:

示例如下:

http://localhost:8089/;jsessionid=72E275DDDD4FFC3FBDCAB91BF5108B37template/templateList?pageSize=10&pageNum=1&title=&parentId=0

还有的情况是;jsessionid=xxx出现在了请求的末尾.

解决办法

先将请求中的字符串;jsessionid=xxx替换为空字符串,然后请求转发.核心代码:

//过滤路径中带 ;jsessionid=003EC21DCDFA5169409DB58EE39C0896 的问题String requestURI = request.getRequestURI();if (requestURI.indexOf(";jsessionid=") != -1) {//替换掉路径上的内容, ;jsessionid=003EC21DCDFA5169409DB58EE39C0896requestURI = requestURI.replace(";jsessionid=" + session.getId(),"");//重定向一下request.getRequestDispatcher(requestURI).forward(request, response);return false;}

下面具体实现该方式:

一.新建拦截器或过滤器,项目中已有拦截器或者过滤器的,想复用也可以

我这里用的是拦截器.

新建拦截器,并重写preHandle

@Component
public class AuthInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException, ServletException {

二.在拦截器preHandle方法中进行处理

代码即核心代码,如下:

//过滤路径中带 ;jsessionid=003EC21DCDFA5169409DB58EE39C0896 的问题String requestURI = request.getRequestURI();if (requestURI.indexOf(";jsessionid=") != -1) {//替换掉路径上的内容, ;jsessionid=003EC21DCDFA5169409DB58EE39C0896requestURI = requestURI.replace(";jsessionid=" + session.getId(),"");//重定向一下request.getRequestDispatcher(requestURI).forward(request, response);return false;}

强调!!!一定要return false,不然这个请求实际上是被放行了,也就导致了404报错.而return false后,请求会在在这段代码处理后,变成了正确的路径,重新走一遍服务端,这样操作后,你会发现前端页面控制台虽然还是那种错误路径,但是已经能正确得到响应,获取到数据了.

问题诱因

通过查资料及整理,我的理解是,浏览器与服务端交互默认带有session,而某些操作或设计导致浏览器第一次与服务端交互时没有相应的session留存在服务端,这时候,服务端会补一个session留存,而这个动作会导致浏览器的http请求拼接一串含有jsessionid的字符串到路径上,导致了该问题.

说到这里,我的问题发生于我通过iframe标签集成一个内部的简单的单点登录功能时,场景给大家描述一下:


























1.请求A换取票据






2.A系统返回票据给浏览器






3.通过iframe标签请求B系统






4.B系统校验票据赋予登录成功的session










浏览器









A系统









B系统







如果各位看官觉得我的理解不准确,可以多查查资料自行了解下,欢迎在评论里对我提出宝贵的意见.

请求路径上带有或出现jsessionid的处理办法相关推荐

  1. 请求路径@PathVariable与请求参数@RequestParam的区别

    转自:http://www.iteye.com/problems/101566: http://localhost:8080/Springmvc/user/page.do?pageSize=3& ...

  2. Spring Boot 2.1之后如何在启动日志中打印请求路径列表

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...

  3. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表

    如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...

  4. request如何获取请求路径方法

    request如何获取请求路径方法 request对象中包含的是请求信息,当我们在浏览器地址栏上输入: http://localhost:8080/Example/AServlet?username= ...

  5. AFN(向网络发送请求---文件上传)

    基本使用 GET请求 1.创建会话管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];NSDictionary *pa ...

  6. springboot控制台日志打印到日志文件 (请求路径,执行sql,参数等)

    经过几天的尝试 重终于把这个东西肝出来了 目录结构 我添加太多pom了 忘记有哪些了 也懒得找了 也就是常用的那几个吧 依赖pom 小伙子们自己添加吧!!! 首先你要把你项目跑起来 配置数据源如下 s ...

  7. Python爬虫学习笔记-第二课(网络请求模块上)

    网络请求模块上 1. 相关概念介绍 1.1 向网站发起请求的方式: 1.2 url-全球统一资源定位符 1.3 User-Agent 用户代理 1.4 referer 1.5 状态码 1.6 抓包工具 ...

  8. Shiro和Spring结合对请求路径进行过滤和记住我过滤操作

    一,请求路径的过滤器 SessionExpireFilter.java如下: package com.innotek.core.support.filter;import javax.servlet. ...

  9. FastAPI从入门到实战(11)——表单请求与上传文件

    本文主要记录表单的数据请求以及上传不同大小的文件.上传多个文件.获取文件信息等相关内容. 表单请求 @app07.post("/stu07/form") def stu07_for ...

最新文章

  1. hdu2899 三分
  2. python三十四:json模块
  3. bazel 链接第三方动态库_C语言学习篇(31)——linux中制作动态链接库
  4. Android:安卓APP开发显示一个美女,安卓APP开发显示两个美女
  5. 数据结构--队列(链表实现)
  6. Java的IO:BIO | NIO | AIO
  7. hdf5文件和csv的区别_使用HDF5文件并创建CSV文件
  8. 密码学专题 文件编码格式
  9. 缓存击穿和缓存穿透的区别_后端RoadMap011:缓存穿透、缓存击穿、缓存雪崩区别和解决方案...
  10. Android知识点复习(一)-Android系统架构
  11. 01_商城项目设计与工程搭建
  12. delphi编写ocx控件步骤
  13. 我的大数据之路 -- 猫眼电影再战
  14. 水声网络架构及关键问题笔记
  15. OSPF网络可以没有BDR(实验)
  16. ios android与wp,在iOS与Android间选择WP
  17. android numberpicker 自定义,Android的自定义数字Picker控件-NumberPicker使用方法
  18. (OK) MIMP - 17 ( 5 nodes) - 抓包-缺少 MPTCP-JION - 节点1:服务器 mptcp-kmsg-server.txt
  19. 全面认识二极管,一篇文章就够了
  20. 最新仿山楂岛留言源码+轻量级简约

热门文章

  1. 标准中文电码 API数据接口
  2. 西北乱跑娃 --- python分段下载文件io流
  3. 分支语句(if,switch)
  4. 立冬出生的宝宝取名大全测试打分准不准
  5. 立冬了,小伙伴们要注意保暖哦!
  6. 探究磁盘碎片产生的原因及预防办法
  7. 中国12家云平台实际进展情况,看完这篇你就全部了解了!
  8. java-php-python-医院挂号系统计算机毕业设计
  9. java测量麦克风音量_Android-使用mediarecorder类获取当前麦克风音量值
  10. woocommerce对接paypal如何进行沙盒测试?