我尝试发送http://site.com/abc%2Fabc之类的请求但它不起作用(发送状态400)。我如何理解tomcat出于安全原因不接受编码路径分隔符,但我不知道如何启用此编码。 (我发现apache http服务器只有AllowEncodedSlashes选项)。你能救我吗?
更新
我使用微小的黑客修复了这个问题 - 在渲染之前替换'|'上的所有'/'字符并在'/'
上反转此字符后答案 0 :(得分:22)
有一个允许编码路径分隔符的Tomcat选项。
将CATALINA_OPTS env var设置为
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
这将允许编码的斜杠。
答案 1 :(得分:7)
我们也可以添加此条目 catalina.properties中的“org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true” 允许在url中使用带编码的斜杠。
要允许反斜杠,您必须设置不同的属性。 Refer this url 对于不同的配置。
答案 2 :(得分:0)
您是否尝试将URIEncoding="UTF-8"
放入<Connector
的{{1}}?
答案 3 :(得分:0)
通过编辑$ CATALINA_HOME \ conf \ server.xml
使我的工作变得可行旧价值:<Connector ... protocol="HTTP/1.1"... />
新价值:<Connector ... protocol="HTTP/1.1"... relaxedQueryChars='\ { } |' />
我正在使用Tomcat 7.0.88