Tomcat 早起版本是支持特殊字符的,不过后来版本中认为这些字符是不安全的(unsafe),所以不能直接在URL 中对这些字符直接传入,需要编码来表示,有人提出异议后Tomcat给开发人员留了个后门 ,可以自行配置:
修改conf文件夹下的catelina.properties文件:tomcat.util.http.parser.HttpParser.requestTargetAllow=|{} #仅限于|,{,}三种

这个方式仅支持|{}三种,其他字符是不能配的,所以用的时候需要将传的时候做一个转换,具体如下:
| 字符 | 描述 | 用法 | 编码 |
|---|---|---|---|
| ; | 分号 | 保留 | %3B |
| / | 斜线 | 保留 | %2F |
| ? | 问号 | 保留 | %3F |
| : | 冒号 | 保留 | %3A |
| @ | “at”符号 | 保留 | %4 |
| = | 等号 | 保留 | %3D |
| & | “和”符号 | 保留 | %26 |
| < | 小于号 | 不安全 | %3C |
| > | 大于号 | 不安全 | %3E |
| " | 双引号 | 不安全 | %22 |
| # | 井号 | 不安全 | %23 |
| % | 百分号 | 不安全 | %25 |
| { | 左大括号 | 不安全 | %7B |
| } | 右大括号 | 不安全 | %7D |
| 竖 | 竖线 | 不安全 | %7C |
| \ | 反斜线 | 不安全 | %5C |
| ^ | 加字号 | 不安全 | %5E |
| ~ | 波浪 | 不安全 | %7E |
| [ | 左中括号 | 不安全 | %5B |
| ] | 右中括号 | 不安全 | %5D |
| ` | 反单引号 | 不安全 | %60 |
| 空格 | 不安全 | %20 |
直接使用编码替换原字符就可以。
本文详细介绍了在Tomcat中如何处理URL中的特殊字符,包括字符的保留与不安全属性,以及如何通过配置允许特定不安全字符的使用,提供了字符编码对照表。

1182

被折叠的 条评论
为什么被折叠?



