Curl在RHEL5 / 6/7上返回损坏的数据

时间:2015-09-03 01:04:11

标签: curl libcurl

我在RHEL5,6和7盒子上试过这个 - 在所有情况下,返回的数据都已损坏。

跑步时:

curl https://my-server/my/web/service/service_name?xsd=../common/common_simple.xsd 

返回的数据与我在Windows上通过网络浏览器获得的数据不同。

此外,wget在cmd行中工作得很好。

预期结果与curl得到的差异如下:

431,432c431,432
<       <!--   [\-\s0-9a-zA-Z]{1,30}   -->
<       <xs:simpleType name="Test123ModelType">
---
>       <!--   [\-\s0-9a-boolean">
>               </xs:r  <xs:simpleType name="Test123ModelType">

以上两行是文件之间的唯一区别。其余内容完全相同。

在所有情况下(在所有服务器上,包括预期和损坏的内容),重新检索的文件大小都相同。

另一个有趣的转折是它发生在MOST时代,但不是每次都发生。每10次执行一次,它就会返回正确的内容。

文件大小为26566字节。

更新: 我用--trace选项运行curl,我在跟踪输出中看到以下内容:

<= Recv data, 8208 bytes (0x2010)
1000: 2d 5c 73 30 2d 39 61 2d 62 6f 6f 6c 65 61 6e 22 -\s0-9a-boolean"
1010: 3e 0a 09 09 3c 2f 78 73 3a 72 09 3c 78 73 3a 73 >...</xs:r.<xs:s
1020: 69 6d 70 6c 65 54 79 70 65 20 6e 61 6d 65 3d 22 impleType name="

这看起来像是来自服务器的损坏数据。但是,我不明白的是,为什么它通过浏览器和wget工作正常。

更新:尝试在Linux上运行时指定多个不同的代理字符串 - 未发现行为更改。

更新:尝试使用winl和openssl版本的curl在Windows 7上运行相同的操作,并且无法重现该问题。还尝试通过Linux上的lynx文本浏览器运行 - 也没有以这种方式重现问题。

非常感谢任何解决/疑难解答的想法。

0 个答案:

没有答案