Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。

具体来说,就是添加了些规则去限制HTTP头的规范性

参考这里

具体来说:

org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target

if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i == 35 || i == 60 || i == 62 || i == 92 || i == 94 || i == 96 || i == 123 || i == 124 || i == 125) {
IS_NOT_REQUEST_TARGET[i] = true;
}

转换过来就是以下字符(对应10进制ASCII看):

  • 键盘上那些控制键:(<32或者=127)
  • 非英文字符(>127)
  • 空格(32)
  • 双引号(34)
  • #(35)
  • <(60)
  • >(62)
  • 反斜杠(92)
  • ^(94)
  • TAB上面那个键,我也不晓得嫩个读(96)
  • {(123)
  • }(124)

   |(125)

  解决办法1:

  还是参考这里

  即:

  配置tomcat的catalina.properties

  添加或者修改:

  tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

  这种方法只适合对应的应为,如果为中文则就不行。如果有?和&这些符合那么

  tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}?&

  解决办法2:

  最轻便的方法,更换tomcat版本。此方法比较快

  解决办法3:

  对相应的参数进行编码,就是将所有的参数都进行编码

  解决方法4:

  选择另外的参数传递方法,比如post或者localStorage。

最新文章

  1. Socket开发框架之数据加密及完整性检查
  2. TCP 连接的 TIME_WAIT 过多 导致 Tomcat 假死
  3. CentOS7+Redis Live安装配置
  4. 【转】Linux Kernel __setup(str, fn)解析
  5. php_1
  6. PHP的线程安全与非线程安全版本的区别
  7. Android怎样改动app不在多任务列表中显示
  8. 利用WebApi获取手机号码归属地
  9. XJOI网上同步训练DAY2 T1
  10. python 之 yield表达式
  11. 剑指Offer——联通研究院笔、面试题 (Offer已收割)
  12. GROUP BY你都不会!ROLLUP,CUBE,GROUPPING详解
  13. Hive的命名空间
  14. vmware station-ubuntu18.04 共享剪贴板
  15. PAT甲级1141 Ranking of Institutions
  16. 想涨工资吗?那就学习Scala,Golang或Python吧
  17. Linux中断(interrupt)子系统之三:中断流控处理层【转】
  18. POSIX 共享内存和 系列函数
  19. Django文档学习
  20. Python之美[从菜鸟到高手]--NotImplemented小析

热门文章

  1. C#下JSON字符串的反序列化
  2. HDU 5762Teacher Bo
  3. linux常见基础问题
  4. clojure一些笔记
  5. 洛谷 P2822 [ NOIP 2017 ] 组合数问题 —— 数学
  6. 深入理解JMM(Java内存模型) --(七)总结
  7. bzoj 2957: 楼房重建【线段树】
  8. (博弈论)51NOD 1072 威佐夫游戏
  9. 微信小程序去除button边框
  10. [Qt Creator 快速入门] 第4章 布局管理