在HTTP请求中转义斜杠

时间:2012-07-27 07:47:00

标签: java http url tomcat jetty

我从Javascript到Java Web应用程序执行http DELETE 请求。该网络应用使用泽西来发送网址。棘手的是,我正在使用包含正斜杠的路径参数(例如“XX / 6666”)。当我在 Jetty (maven插件)中运行时,它工作正常,但是当我在我的生产服务器上运行时( Tomcat )它没有,即我得到 404

正斜杠使用%2F进行转义,因此我的请求网址类似于

删除http://.../4776/shipmentOrders/XX%2F6666

这是否允许在http规范中,Jetty和Tomcat是否可能以不同的方式解释这些?

2 个答案:

答案 0 :(得分:10)

Tomcat(我认为在版本5,6和7中)有目的地阻止在路径中使用%2f来防止目录遍历攻击。据称,您可以通过设置org.apache.tomcat.util.buf来关闭此保护。 UDecoder.ALLOW_ENCODED_SLASH =真。我没有亲自对此进行测试,但看到网上的其他人声称它已经为他们解决了这个问题。但请注意,Tomcat前面的Web服务器也可能拦截并重写URL,自动将%2f解码为正斜杠。

参考:http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html

答案 1 :(得分:2)

是的,两者都允许:但是出于安全原因,某些服务器可能会拒绝该请求。