gpt4 book ai didi

tomcat 8在处理get请求时抛出400错误

转载 作者:行者123 更新时间:2023-11-28 23:54:56 24 4
gpt4 key购买 nike

好像是用的大括号{}有问题。我尝试通过添加 relaxedPathChars='{ | 更改 server.xml 中的连接器}' relaxedQueryChars='{ | }' 但没有解决问题。还向同一连接器添加了 URIEncoding="UTF-8"useBodyEncodingForURI="true"

我无法自己更改大括号,因为它来自外部脚本,而且我无法事先更改 url 字符串,所以我试图更改 tomcat 中的设置以允许 {} 但到目前为止运气不好。

这一切都在 nginx 网络服务器上,如果有帮助的话。

最佳答案

较新版本的 Tomcat 正在尝试遵守 RFC7230/RFC3986(限制可以在 URL 中使用哪些字符)。但这会导致一些较旧的应用程序出现问题,现在有一种方法可以覆盖这些规则。 (参见此处的讨论:https://bz.apache.org/bugzilla/show_bug.cgi?id=62273)

在最新版本的 Tomcat 中,此行为发生了一些变化。

在当前版本(8.0.53、8.5.34、9.0.12)中,您可以在 server.xml 中使用连接器的 relaxedPathChars 和 relaxedQueryChars 属性:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="60000" 
relaxedQueryChars='^{}|[]'
redirectPort="8443" />

在旧版本中,此行为由现已弃用(!)系统属性 tomcat.util.http.parser.HttpParser.requestTargetAllow ( https://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html )

请注意,有些 Tomcat 版本实现了严格的规则,但还没有此选项。

(我还看到了较旧的 Tomcat 版本,但已打补丁 - 此行为已更改以解决可能的漏洞 - http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6816)

关于tomcat 8在处理get请求时抛出400错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52502686/

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