【问题标题】:Escaping slash in HTTP requestHTTP 请求中的转义斜杠
【发布时间】:2012-07-25 21:10:10
【问题描述】:

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

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

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

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

【问题讨论】:

  • 可以显示请求代码吗?

标签: java http url tomcat jetty


【解决方案1】:

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

【讨论】:

  • 我已经解决了这个问题,所以我不会验证这一点,但我会接受你的回答,因为它非常完整。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多