当我将此请求发送到 Tomcat 时,它正在工作
http://example.org/?foo=%3Cbar/%3E
但这一个给出了“400 错误请求“
http://example.org/?foo=<bar/>
我确实知道请求格式不正确,客户端的行为也正确,但他们却不知道。他们不遵循 RFC 标准,但我无法改变这一点。我必须处理它。
是否有可能强制 Tomcat 接受这个格式错误的请求?
答案1
一个解决方案是添加relaxedQueryChars
到Connector
server.xml
不安全接受的字符有:
<Connector relaxedQueryChars='<>' ... />
由于 '<' 在 server.xml 中用作特殊字符,因此必须使用与号编码 <。
解决方案在这里找到:
https://stackoverflow.com/questions/50361171/how-to-allow-character-in-urls-for-tomcat-8-5
有关限制的更多信息relaxedQueryChars
:
https://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Standard_Implementation