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 |
直接使用编码替换原字符就可以。