是否有可能从apache tomcat中操作原始http-stream?

时间:2010-10-31 21:53:59

标签: tomcat httprequest

使用我的webservice的应用程序发送无效的soap-request,我的服务无法处理此请求。

应用程序发送错误标记(拼写错误),但它们无法改变此行为。

所以我的问题:

是否有可能使用过滤器或列表器来获取原始http流,更改某些内容并将其放回链中。

谢谢你,Alex

1 个答案:

答案 0 :(得分:0)

我假设您要更改HTTP请求的传入正文。没有简单的方法可以做到这一点。我不知道任何允许你“正式”执行此操作的Servlet API。

“非正式”你可以在org.apache.catalina.connector.Request上做一些反思魔法。如果查看此对象,您将看到返回实际正文(getReader()getInputStream())的两个方法都是在输入缓冲区(org.apache.catalina.connector.InputBuffer的实例)之上构建流。您必须操纵该缓冲区,以便返回受污染的数据。

毋庸置疑,这是一个非常不稳定和危险的黑客攻击。无法保证这将在下一个Tomcat版本(即使是次要版本)上运行,并且几乎无法维护。