IIS通过两个响应响应单个请求

时间:2013-08-14 17:54:29

标签: asp.net http iis-6 windows-server-2003 httphandler

我们有一个用户对我们的网络服务器进行POST(Windows Server 2003,IIS 6)。他们从我们的webapp获得完整的响应,但是IIS也会响应“400 Bad Request”。没有提供其他信息(是的,我关闭了友好错误)。

起初,我想也许是某些中间件在那里注入响应。但是,我能够在HTTPSys错误日志中找到以下内容,确认它来自我们的服务器:

2013-08-09 23:36:40 11901 80 HTTP / 0.0 Unparsed - 400 - BadRequest -

有一大堆这些错误堆积起来,我不知道为什么。 Unparsed并没有真正告诉我什么,所以我没有太多可以继续下去。我能够让他们生成一个wireshark跟踪,这表明我们确实正在响应完整的正确响应,然后附加一个400错误的请求响应。我从wireshark完全复制了他们的请求并从我的机器上尝试了它,当然,我无法重现它(我得到了一个有效的回复)。

所以我完全无法重现“Unparsed”错误,但是我能够从一个请求中获得两个回复。我故意打破了请求标题和正文之间的行结尾,然后我得到了一个完整的正确响应,然后是“Bad Request(Invalid Verb)”。

两个问题

1)有没有人对如何在HTTPsys日志中产生“Unparsed”错误有任何想法?关于如何再现这个的任何想法?

2)为什么IIS会响应具有两个响应的单个请求?这是正常行为,还是指示配置错误?

感谢愿意为这个可怕的头痛提供帮助的人!

1 个答案:

答案 0 :(得分:1)

在这里回答我自己的问题,因为我不希望其他人受到这种痛苦。

事实证明他们的POST在内容长度方面有轻微的错误,我认为它不包括最后的“\ r \ n”,但无论是什么,计数最终缩短为2。

当我复制确切的请求并从我的机器发送它时从未出现的原因是我没有正确关闭连接。出于某种原因,使用FIN关闭连接实际上会产生差异并导致400 Bad Request。

不确定为什么会发生这种情况,可能会在FIN到来时以某种方式读取初始请求中发送的额外字符?我不知道,但你有它。修复内容长度,疼痛消失。