3

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

正斜杠使用 %2F 转义,所以我的请求 URL 看起来像

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

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

4

2 回答 2

10

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

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

于 2012-08-21T22:17:12.363 回答
2

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

于 2012-07-27T08:05:04.877 回答