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

开发避坑短篇(8):Java Cookie值非法字符异常分析与解决方案:IllegalArgumentException[32]

异常信息

javajava.lang.IllegalArgumentException: An invalid c0haracter [32] was present in the Cookie value。

异常背景

spring web项目,从tomcat7迁移到tomcat8后运行报错。

异常分析

翻译异常信息:java.lang.IllegalArgumentException: Cookie值中包含非法字符。Cookie值中不允许包含空格等特殊字符,ASCII码32对应空格字符‌。经查阅资料,了解到Tomcat8新增了对HTTP请求头和Cookie值的严格校验,ASCII码32(空格)等特殊字符会被拒绝‌,这与新升级的RFC 6265规范相关‌。常见触发场景‌(1)URL或Cookie值包含空格、花括号等字符‌。(2)时间格式化字符串直接作为Cookie值(如"yyyy-MM-dd HH:mm:ss")‌。
(3)请求头或参数中存在未编码的特殊字符‌。

解决办法

修改tomcat目录下的配置文件\conf\context.xml,指定CookieProcessor为org.apache.tomcat.util.http.LegacyCookieProcessor,具体配置如下:

CookieProcessor 是 Tomcat 的核心组件,负责解析 HTTP 请求中的 Cookie 头部javax.servlet.http.Cookie 对象,并在响应时将 Cookie 对象转换为标准的 Set-Cookie 头部返回给客户端‌。LegacyCookieProcessor 是 Tomcat 早期版本中用于解析和生成 Cookie 的核心组件,其核心作用主要有:
(1)允许特殊字符‌:与严格遵循 RFC 6265 规范的 Rfc6265CookieProcessor 不同,LegacyCookieProcessor 对 Cookie 值中的特殊字符(如 ‌空格(ASCII 32)、中文、花括号等‌)容忍度更高,不会因这些字符触发 IllegalArgumentException 异常‌。
(2)兼容历史代码‌:适用于从 Tomcat 7 或 8.0 迁移至 Tomcat 8.5+ 时,处理遗留系统中未严格编码的 Cookie 值‌。

http://www.lryc.cn/news/603405.html

相关文章:

  • 【C#获取高精度时间】
  • 智能落地扇方案:青稞RISC-V电机 MCU一览
  • SZU大学物理实验报告|电位差计
  • 【dropdown组件填坑指南】—怎么实现下拉框的位置计算
  • python cli命令 cli工具命令 自定义cli命名 开发 兼容 window、mac、linux,调用示例
  • React面试题目和答案大全
  • 注册发送手机短信
  • Linux 完整删除 Systemd 服务的步骤
  • 【自制组件库】从零到一实现属于自己的 Vue3 组件库!!!
  • Rust 实战三 | HTTP 服务开发及 Web 框架推荐
  • leaflet中绘制轨迹线的大量轨迹点,解决大量 marker 绑定 tooltip 同时显示导致的性能问题
  • HTTP 与 HTTPS 的区别
  • div 封装日历
  • C++学习之继承
  • scrapy框架新浪新闻
  • linux中简易云盘系统项目实战:基于 TCP协议的 Socket 通信、json数据交换、MD5文件区别与多用户文件管理实现
  • uniapp 微信小程序 列表点击分享 不同的信息
  • YOLO--目标检测基础
  • 计算机视觉-图像基础处理
  • TailWindCss安装使用教程
  • eudev是什么东西,有什么作用
  • 1768. 交替合并字符串
  • 无线网络优化实践
  • [学习记录]URP流程解析(2)--初始化阶段
  • 虚拟机网络修复
  • 充电宝自燃隐患引发关注:如何确保充电宝安全?
  • 门控激活函数:GLU/GTU/Swish/HSwish/Mish/SwiGLU
  • 机器学习sklearn:泰坦尼克幸存预测(决策树、网格搜索找最佳参数)
  • 【深度学习新浪潮】什么是世界模型?
  • fastApi中的ocr