Tomcat解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986问题
问题描述
Tomcat运行项目中出现Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
错误
问题原因
Tomcat7.0之后的版本按照RFC 3986
规范进行访问解析,Url中只允许包含英文字母(a-zA-Z
)、数字(0-9
)、特殊字符(- _ . ~
)、保留字符(! * ' ( ) ; : @ & = + $ , / ? # [ ]
)
解决方法
更换低版本Tomcat
修改Tomcat的server文件
修改Tomcat目录下的
/conf/server.xml
文件,在<Connector>
标签中添加relaxedQueryChars="[]|{}^\`"<>"
属性对特殊字符进行转义
字符 | 描述 | 编码 |
---|---|---|
; | 分号 | %3B |
/ | 斜线 | %2F |
? | 问号 | %3F |
: | 冒号 | %3A |
@ | “at”符号 | %4O |
= | 等号 | %3D |
& | “和”符号 | %26 |
< | 小于号 | %3C |
> | 大于号 | %3E |
“ | 双引号 | %22 |
# | 井号 | %23 |
% | 百分号 | %25 |
{ | 左大括号 | %7B |
} | 右大括号 | %7D |
| | 竖线 | %7C |
\ | 反斜线 | %5C |
^ | 加字号 | %5E |
~ | 波浪号 | %7E |
[ | 左中括号 | %5B |
] | 右中括号 | %5D |
` | 反单引号 | %60 |
空格 | %20 |