首页 文章

在HTTP请求中转义斜杠

提问于
浏览
3

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

正斜杠使用%2F进行转义,因此我的请求URL看起来像

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

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

2 回答

  • 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

  • 2

    是的,对于两者:允许,但有些服务器可能出于安全原因拒绝请求 .

相关问题