当前位置: 首页 > 知识库问答 >
问题:

如何使Apache Tomcat 8.0.41允许URL GET请求中的管道字符?

薛涛
2023-03-14

这里的错误,当我试图发送GET请求与URL在我的java Web应用程序:我的本地机器URL看起来像这样http://localhost:8080/test?param1=1|2

2017年2月20日下午4:51:19组织。阿帕奇。郊狼。http11。AbstractHttp11处理器进程信息:解析HTTP请求头时出错注意:进一步出现的HTTP头解析错误将在调试级别记录。JAVAlang.IllegalArgumentException:在请求目标中找到无效字符。有效字符在org的RFC 7230和RFC 3986中定义。阿帕奇。郊狼。http11。AbstractNiInputBuffer。org上的parseRequestLine(AbstractNiInputBuffer.java:283)。阿帕奇。郊狼。http11。抽象Http11处理器。进程(AbstractHttp11Processor.java:1017)位于org。阿帕奇。郊狼。AbstractProtocol$AbstractConnectionHandler。org上的进程(AbstractProtocol.java:684)。阿帕奇。公猫util。网NioEndpoint$SocketProcessor。doRun(NioEndpoint.java:1524)位于org。阿帕奇。公猫util。网NioEndpoint$SocketProcessor。在java上运行(NioEndpoint.java:1480)。util。同时发生的线程池执行器。java上的runWorker(未知源代码)。util。同时发生的ThreadPoolExecutor$Worker。在组织上运行(未知源)。阿帕奇。公猫util。线程。TaskThread$wrappingranable。在java上运行(TaskThread.java:61)。朗。丝线。运行(未知源)

我想问是否有可能在不更改Apache Tomcat版本或更改现有代码的情况下修复此问题。我想知道Apache Tomcat配置文件是否能够禁用或绕过此检查?

共有3个答案

花飞尘
2023-03-14

在您的server.xml中尝试以下方法

后化
2023-03-14

在过去的一天里,我一直在为这件事伤脑筋。我曾尝试在tomcat中使用mod_rewrite,试图在输入时对“|”进行urlencode,但错误仍然存在,因为它在到达重写引擎之前抛出。所以运气不好。我发现的唯一两个可行的解决方案是:

  1. 在tomcat(nginx)之前放置一个代理,它可以对管道进行URL编码,而不会抛出合理的IllegalArgumentException
颛孙正谊
2023-03-14

自从Tomcat 8.5.8以来,这不再是故意的。

请求url中存在无效字符的安全漏洞。

看见https://bugzilla.redhat.com/show_bug.cgi?id=1397484

将管道编码为|

 类似资料:
  • 问题内容: 我有从本地主机运行的webapp(由于调试),它发出了跨域AJAX请求。我可以轻松地为Chrome设置标志“ –disable-web- security”,并且webapp可以在Chrome中按预期工作。但是我也需要在Windows上的Safari中执行此操作。是否有一些类似的标志,或者可以在“首选项”中的某个位置进行设置? 感谢帮助。 问题答案: 解决方案是在服务器上设置标头。 在

  • 问题内容: 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展。 我在脚本顶部仅添加了以下两行,以使它们能够做到: 现在我的问题是:这里是否遗漏了任何安全方面的考虑?这个简单的解决方案会带来严重的问题吗? 如果是这样,什么是更好的解决方案? 感谢您的回复。 问题答案: 如上所述,任何人都可以随时向您的页面发送请求:因此,您需要考虑的主

  • 在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展<我只是在我的脚本顶部添加了这两行,让他们完成这项任务: 现在我的问题是:这里有我错过的任何安全考虑吗?这个简单的解决方案会产生严重的问题吗? 如果是,更好的解决方案是什么? 感谢您的回复。

  • 简化:在我的JS/PHP应用程序中,我有一个按钮。当用户单击按钮时,他得到1分,该分数通过jQuery AJAX/PHP保存在数据库中。 当然,用户现在可以调用发出AJAX请求的脚本,而无需单击按钮。有没有避免这种情况的最佳做法? 我使用AJAx是因为我不想重新加载页面。 更新:还有许多其他选择,用户可以如何赚取积分。理想情况下,我会有一个JS函数add_points(点),为用户添加点。但是我知

  • 我试图使用原始JSON发出一个POST请求来松弛API,但我一直得到以下错误

  • 问题内容: 我正在建立一个站点,在该站点中我想从textarea元素的值创建文件客户端。 我有执行此操作的代码,但出现此错误 HTTP错误404.15-找不到请求过滤模块配置为在查询字符串过长的情况下拒绝请求。 有没有一种方法可以覆盖它,以便我能够处理任何大小的请求? 如果没有,有没有办法在不使用文件系统/活动x对象的情况下生成客户端文件? 谢谢 问题答案: 将以下内容添加到您的web.confi