2011-03-14 65 views
5

我一直在经历着一个奇怪的间歇性问题了,我已经快疯了试图找出过去几个月。间歇性问题:POST请求得到损坏

我有我的网站上生成XML数据的Flash动画的运行,然后通过POST请求PHP脚本发送。这个文件的完整性对于我的应用程序的运行至关重要,所以我需要确保它完好无损。为了这个,我生成了一个MD5哈希值并发送它。在接收端,我的PHP脚本将接受数据,MD5并比较两个哈希值。如果它们是相同的,那么我认为该文件是好的,并将其存储以备后用。如果MD5哈希值不同,我给自己发一封电子邮件并复制文件以进行手动检查。

大部分的时间(> 99%),这个精美的作品,我觉得与上传的数据没有问题。但是,每隔一段时间,我发现一些额外的字符被注入到XML文件中,导致其损坏。发生这种情况时,文件也会被截断。下面是我所看到的损坏文件的一个片段 - 它看起来好像它的一些Web服务器相关的设定:

...开始XML数据...

 <scale>1.7</scale> 
    <rotation>0</rotation> 
    <popdelay>0.7290036325342953</popdelay> 
    Proxy-Connection: keep-alive 
Cache-Control: max-age=0 

0<poptime>0.6</poptime> 
    <popangle>90</popangle> 
    <shadowvis>true</shadowvis> 
    <backingcolor>0xFF222222</backingcolor> 

...继续XML数据...

我发现,这个问题将继续它发生在特定机器上后发生 - 即如果用户不断尝试上传自己文件中的错误将继续突然出现100%的时间为他们。我已经看到这种情况发生在多个浏览器/平台(如下):

Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; InfoPath.3; .NET4.0C) 
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.1) 
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.16) Gecko/20101130 Firefox/3.5.16 (.NET CLR 3.5.30729) 
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CMNTDF; InfoPath.3; .NET4.0C) 

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.6.3 

我的应用程序服务器正在运行通过其他的mod_proxy的Apache2服务器访问,虽然我不知道这是玩,因为这一个角色程序几乎可以在其他机器上工作。我试图调整我的apache2设置,但他们似乎没有任何区别(如果您认为它相关/有帮助,我可以稍后发布它们)

如果任何人有任何想法发生了什么或如何开始解决这个问题我真的很感激。我一直在试图研究这几个月,并没有提出任何事情。

非常感谢你的时间!

+1

,因为它发生在多个不同类型的浏览器,它是最有可能不是浏览器的东西。开始调查这些请求的来源。它是一个特定的ISP?一个特定的子网? – 2011-03-14 13:51:52

+1

你用什么方法发送数据?你发送的数据有多大? – 2011-03-26 01:34:02

+0

竖起大拇指“数据量有多大”的问题。它看起来像XML在多个请求中被破坏,或者由于大小,或者请求需要很长时间(可能是由于外部连接缓慢)。 – preinheimer 2011-03-31 12:37:19

回答