HttpResponse正在被改变

目前我们正面临着一个奇怪的问题,我们不知道是什么原因造成的。

我们有一个在serverA上托pipe的web服务。 当从服务器B(使用命令curl http://serverA:8008/service/getId )调用此Web服务时,我们得到所需的响应。 (Web服务返回一个整数的Id)。

当从serverC调用同一个web服务时,我们得到了所需的响应,但是响应中的数字2被replace为_

例如,当从服务器B调用Web服务时,我们得到5002 。 当从serverC调用同一个Web服务时,我们得到500_

我们检查serverA的wireshark细节,从serverA发出的数据对于这两个服务器是一样的。

我们目前还不知道为什么会发生这种情况。 我想补充说,serverC是在DMZ,而serverB不是。

任何input/在这方面的帮助,高度赞赏。

通过收集事实

  1. server doesn't change the response by its own. 2. Web Service is giving the same response for the same input. 

唯一的罪魁祸首是你的防火墙,你能阻止它进行测试目的,看看是否如预期般响应。 或尝试检查防火墙设置并为Web服务创建一个漏洞/例外。

感谢大家的努力,这个问题现在已经解决了。 这是造成这种情况的不正确的防火墙规则。 我问了我们的网络工程师,防火墙设置如何改变http响应正文,以下是我得到的答复:

对于某些协议,防火墙执行深层次的数据包检测,而不是只检查实际查看有效负载的端口号。 这使得它可以阻止恶意软件,可能利用漏洞的格式错误的数据包等。 所以它知道要检查什么,你必须在规则中指定什么流量,所以你说它是在端口8008,它是HTTP。 问题在于,由于某种原因,此规则已被设置为使用端口8008,但流量类型被设置为被动模式FTP而不是HTTP。 一旦我纠正它到HTTP,它开始工作。

尝试把serverB放在DMZ中,看看会发生什么。
如果它的行为相同,则是一个网络问题。
如果没有,你可能在服务器上有两个不同版本的代码。

这听起来像你在你的URL中有特殊字符,它们会导致覆盖端口号,但只有在字符集中识别字符。 你可以使用十六进制编辑器来检查URL的特殊字符(退格,具体)?

我无法解决你的问题,但寻找路径上的任何代码转换器。 从服务器C发送请求到服务器A. 1)在A的wireshark,看它是否正确接收请求。 一个可能的代码转换器可能会将无主机地址转换为主机地址(GET / service / getId GET GET http:// serverA:8080 / service / getId),或者可能会丢弃主机头等。但是,如果您看到没有错误,第2步。

2)在B的wireshark,看是否有效。 看看Content-Type是否设置正确。 如果设置正确,仍然被操纵尝试添加头缓存控制:无变换。 许多代码转换器都尊重这一点。 如果这也失败了,并且无法删除任何可能的代码转换器,那么您可能会转到步骤3。

3)只要去https,这是免疫的。

这是Apache的一个功能,旨在隐藏HTTPresponce的一部分。 我没有立即看到修复,也没有时间看。 我将在稍后尝试编辑一个。

如果你想尝试找到它,这里是链接到文档: http : //xianshield.org/guides/apache2.0guide.html

使用[Ctrl] + [F]来查找此语句(不包括qoutes)“配置和建立Apache服务器”