【问题标题】:Tomcat not allowing backslash in URLs in 9.0.7Tomcat 在 9.0.7 中不允许在 URL 中使用反斜杠
【发布时间】:2019-06-09 23:15:27
【问题描述】:

我看到在this patch 中,Tomcat 在 9.0.8 中添加了一个选项以允许在 URL 中使用\。由于规范 RFC 7230 和 RFC 3986,我们有一些 PDF 会启动到页面,例如 https://mrbusche.com/?FilePath=\manuals\Commerciallines\eManual\az.pdf Tomcat 9.0.7 目前正在阻止 URL。

例外

Type Exception Report

Message Invalid character found in the request target. 
The valid characters are defined in RFC 7230 and RFC 3986

Description The server cannot or will not process the request due to something
that is perceived to be a client error (e.g., malformed request syntax
, invalid request message framing, or deceptive request routing).

Exception

java.lang.IllegalArgumentException: Invalid character found in the request target. 
The valid characters are defined in RFC 7230 and RFC 3986

这在 Tomcat 9.0.7 上根本不可能吗?

这是我的 Tomcat 连接器

<Connector
    port="4005"
    connectionTimeout="20000"
    maxHttpHeaderSize="8192"
    minSpareThreads="25"
    enableLookups="false"
    disableUploadTimeout="true"
    acceptCount="100"
    scheme="https"
    secure="true"
    URIEncoding="UTF-8"
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
    maxThreads="150"
    relaxedQueryChars="\"
    SSLEnabled="true" >
</Connector>

【问题讨论】:

  • 我编辑了我的答案,消除了自鸣得意的语气。不是有意冒犯你。

标签: tomcat tomcat9


【解决方案1】:

假设您提到的问题 62273 准确地解决了您的问题并且需要解决它,您必须升级到 Apache Tomcat 9.0.8。

Apache Tomcat 9 changelog 声明这是在 9.0.8 及更高版本上修补的。 希望对您有所帮助。

编辑:这也是stated by @MarkThomas in a text comment on the bug discussion,在我看来这是一个非常光荣的人,我想在这里完全引用它:

向 Tomcat 添加额外代码以说明规范 不遵守其他组件是错误的解决方案。正确的 解决方案是针对不兼容的组件打开错误。 不幸的是,在这种情况下,那些其他组件都是主要的 浏览器供应商,他们不接受他们的行为是 不正确。我还没有看到一个令人信服的论据来解释为什么 浏览器不应实现 RFC 7230 和 RFC 3986。

解决规范不兼容的浏览器行为只是 鼓励供应商继续忽视规范并导致 从长远来看,更大的互操作性问题。然而 另一种方法是为大量用户破坏大量应用程序。 因此,很遗憾我实施了此增强功能 适用于所有当前支持的 Tomcat 版本。

固定在:

  • 9.0.8 以后的主干
  • 8.5.x 用于 8.5.31 及以后
  • 8.0.x 用于 8.0.52 及更高版本
  • 7.0.x 为 7.0.87 起

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多