gpt4 book ai didi

tomcat8 - 如何在 tomcat 8.5 的 URL 中允许 ^ 字符

转载 作者:行者123 更新时间:2023-12-04 01:37:32 24 4
gpt4 key购买 nike

我有以下格式的请求 URL

http://hostname:port/path&param1={"vars":[{"a":"val1","b":"^"},{"c":"val2","d":"^"}]}&param2=Value3|95|3%20-%206%20Months

我按照这个改变了 catalina.properties
stackoverflow question .

但根据 tomcat documentation tomcat.util.http.parser.HttpParser.requestTargetAllow 属性已弃用和 宽松路径字符轻松查询字符 属性将与连接器标签一起使用。

但是,当我将 xml 文件更改为下面时
 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" relaxedQueryChars="^" relaxedPathChars="^"/>

我仍然收到一个 400 错误的字符请求 ^

我不确定这是否是正确的配置。

最佳答案

理想情况下,在将请求发送到服务器之前,您应该始终对查询参数进行 URL 编码。阅读:https://www.talisman.org/~erlkonig/misc/lunatech%5Ewhat-every-webdev-must-know-about-url-encoding/

如果您想使用轻松查询字符路由,请注意查询中的以下字符也在您应该添加到异常的集合中:" { } [ ] ^ |
在你的 server.xml 中试试这个:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" relaxedQueryChars='^{}[]|&quot;' />
bug ticket 62273 上更深入地了解relaxedQueryChars/relaxedPathChars .更改已添加到 Tomat 的所有分支:

  • 9.0.8
  • 8.5.31
  • 8.0.52
  • 7.0.87

  • 我认为您根本不需要relaxedPathChars 属性(这是指URL 路径上的字符)。然而, the Tomcat team's test results似乎建议以下内容可用于最大程度的向后兼容性:
    relaxedPathChars='[]|'
    relaxedQueryChars='[]|{}^&#x5c;&#x60;&quot;&lt;&gt;' />

    nb/查询的第一个参数应该用 ?不是 &
    http://hostname:port/path?param1=...&param2=...&param3=...

    关于tomcat8 - 如何在 tomcat 8.5 的 URL 中允许 ^ 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361171/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com