我从Javascript执行http DELETE请求到Java Web应用程序.该网络应用程序使用泽西岛来发送网址.棘手的是,我正在使用包含正斜杠的路径参数(例如“XX / 6666”).当我在Jetty(maven插件)中运行时,它工作正常,但是当我在我的生产服务器(Tomcat)上运行它没有,即我得到404.
使用/转义正斜杠,因此我的请求URL看起来像
删除http://…/4776/shipmentOrders/XX/6666
这是否允许在http规范中,Jetty和Tomcat是否可能以不同方式解释这些?
解决方法:
Tomcat(我认为在版本5,6和7中)有目的地阻止在路径中使用/来防止目录遍历攻击.据称,您可以通过设置org.apache.tomcat.util.buf来关闭此保护. UDecoder.ALLOW_ENCODED_SLASH =真.我没有亲自对此进行测试,但看到网上的其他人声称它已经为他们解决了这个问题.但请注意,Tomcat前面的Web服务器也可能拦截并重写URL,自动解码/转发正斜杠.
参考:http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html