【问题标题】:Using Apache ProxyPass or Mod_jk with Tomcat when there are special characters in the URL path当 URL 路径中有特殊字符时,将 Apache ProxyPass 或 Mod_jk 与 Tomcat 一起使用
【发布时间】:2014-01-22 23:44:51
【问题描述】:

我正在努力解决 ProxyPass 中的问题。我尝试使用 Apache 和 Nginx 来设置 Proxypass 和 tomcat。一切都很好,除了 URL 中有任何字符。 我不知道这是 Apache 中的错误还是什么,我从 Apache 作为代理在我的程序中获得的请求 URI 与使用没有代理的 Tomcat 不同。我在 Java Servlet 中使用"request.getRequestURI()"。 例如,如果 URL 是

/movies/logs, logs

使用 Apache 或 Nginx 设置 ProxyPass 或 Mod_jk 我得到了:

/movies/logs,%20logs

如果我直接使用Tomcat,我得到:

/movies/logs%2C%20logs

理想情况下,我希望 URL 与我在 Tomcat 中收到的 URL 相同。有人可以帮我解决问题吗?

提前非常感谢!

【问题讨论】:

  • 一个 URL 不应该包含空格,它应该包含 %20 转义,其他的也一样。这里真正的问题是客户端。

标签: java apache tomcat servlets proxy


【解决方案1】:

默认情况下,Apache 在进一步传递 URL 之前会对其进行规范化,显然只有 tomcat 会有所不同。要防止 mod_proxy 修改您的 URL,请将 nocanon 关键字添加到 ProxyPass 指令。

请注意,RFC 1738 中的空格和逗号都被认为是不安全的,不应不转义使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 2011-07-21
    • 2011-02-06
    • 2012-06-11
    • 2011-01-27
    • 2021-10-15
    • 2013-11-26
    • 2011-05-09
    相关资源
    最近更新 更多