java – 在HTTP请求中转义斜杠

我从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

上一篇:Java知识导航总图


下一篇:java.lang.IllegalStateException:使用Jetty和struts编写excel文件作为响应时的STREAM