检索文件时出现随机的http 400错误

时间:2019-03-09 23:22:56

标签: c++ http mfc

我开发了MFC应用程序。启动时,它会从我们的网站检索xml文件的内容。多年来,这样做一直没有问题,但是最近我们收到了400个“错误请求”错误。代码可以归结为:


#include "afxinet.h"
void TestWebAccess(const CString& sPathname)
{
    CInternetSession iSess;
    int nType = INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_RELOAD;
    CStdioFile* pFile = iSess.OpenURL(sPathname, 1, nType);

    DWORD dwStatusCode = 0;
    BOOL bOK = ((CHttpFile*)pFile)->QueryInfoStatusCode(dwStatusCode);
    if (bOK && dwStatusCode == 400) {
        TRACE("400 ERROR: %s\n", sPathname);
    }
} 

并非每次都会发生此错误,而是每尝试几次就会随机发生一次。这排除了很多可能的解释,例如路径名中的任何问题-应用程序每次都传递完全相同的数据,但有时会出错。

在稻草上抓草,我使用WinDump捕获了数据包活动。这是成功运行的节选,其次是糟糕的运行:

---好---

IP (tos 0x0, ttl 128, id 22607, offset 0, flags [DF], proto: TCP (6), length: 162, bad cksum 0 (->c092)!) 10.0.0.3.52244 > 66.96.149.17.80: P 1:123(122) ack 1 win 65535
 ..GET /WebDL2/upgrades_70_TEST.xml HTTP/1.1
IP (tos 0x20, ttl  50, id 33347, offset 0, flags [DF], proto: TCP (6), length: 40) 66.96.149.17.80 > 10.0.0.3.52244: ., cksum 0x3898 (correct), 1:1(0) ack 123 win 29200
IP (tos 0x20, ttl  50, id 33348, offset 0, flags [DF], proto: TCP (6), length: 485) 66.96.149.17.80 > 10.0.0.3.52244: P 1:446(445) ack 123 win 29200
 ..HTTP/1.1 200 OK

---不好---

IP (tos 0x0, ttl 128, id 22674, offset 0, flags [DF], proto: TCP (6), length: 155, bad cksum 0 (->c056)!) 10.0.0.3.52258 > 66.96.149.17.80: P 1:116(115) ack 1 win 65535
 ..GET /WebDL2/upgrades_70_TEST.xml HTTP/1.1
IP (tos 0x20, ttl  50, id 33318, offset 0, flags [DF], proto: TCP (6), length: 40) 66.96.149.17.80 > 10.0.0.3.52258: ., cksum 0xca8a (correct), 1:1(0) ack 116 win 29200
IP (tos 0x20, ttl  50, id 33319, offset 0, flags [DF], proto: TCP (6), length: 469) 66.96.149.17.80 > 10.0.0.3.52258: P 1:430(429) ack 116 win 29200
 ..HTTP/1.1 400 Bad Request

我只是最了解TCP,并且不了解所有这些内容。关于第二个请求是否有任何错误,该错误有400错误?

有关该问题的其他说明:

  1. 如果我将此代码提取到单独的独立应用程序中,则不会发生此问题。 (有时)如果我在InitInstance的开头附近从我们的应用程序调用此代码,就会发生这种情况。

  2. 将目标URL粘贴到浏览器中没有问题-xml页面永远不会失败。

  3. 该问题已由运行该应用程序早期版本的用户报告在该字段中。这使我认为这可能是服务器上突然出现的问题,而不是我们代码中的最新更改。

  4. 不仅仅是这个特定的xml文件出现错误-我已经尝试了很多,它们的行为都相同。

  5. 该服务器是公共域主机(netfirms.com),因此我无法控制它,也无法对其进行试验。到目前为止,他们的技术支持属于“您尝试拔掉它”的品种。他们看不到任何问题。

我已经不知所措了。经过一年多的开发,距离发布新版本只有大约一天的时间,然后突然出现了。我很感谢任何想法。

-吉姆

感谢您的回复。对我好一点,对吗?我以前从来没有看过这些东西。这是另一个好坏块,还有更多信息。

--- good ---
IP (tos 0x0, ttl 128, id 23479, offset 0, flags [DF], proto: TCP (6), length: 155, bad cksum 0 (->bd31)!) 10.0.0.3.57929 > 66.96.149.17.80: P 1:116(115) ack 1 win 65535
    0x0000:  0000 ca11 2233 0025 64a1 6f2b 0800 4500  ...."3.%d.o+..E.
    0x0010:  009b 5bb7 4000 8006 0000 0a00 0003 4260  ..[.@.........B`
    0x0020:  9511 e249 0050 6b28 f0d4 8fd1 31c9 5018  ...I.Pk(....1.P.
    0x0030:  ffff e201 0000 4745 5420 2f57 6562 444c  ......GET./WebDL
    0x0040:  322f 7570 6772 6164 6573 5f37 305f 5445  2/upgrades_70_TE
    0x0050:  5354 2e78 6d6c 2048 5454 502f 312e 310d  ST.xml.HTTP/1.1.
IP (tos 0x20, ttl  50, id 32642, offset 0, flags [DF], proto: TCP (6), length: 40) 66.96.149.17.80 > 10.0.0.3.57929: ., cksum 0x5bab (correct), 1:1(0) ack 116 win 29200
    0x0000:  0025 64a1 6f2b 0000 ca11 2233 0800 4520  .%d.o+...."3..E.
    0x0010:  0028 7f82 4000 3206 e7b9 4260 9511 0a00  .(..@.2...B`....
    0x0020:  0003 0050 e249 8fd1 31c9 6b28 f147 5010  ...P.I..1.k(.GP.
    0x0030:  7210 5bab 0000 0000 cd54 f0b3            r.[......T..
IP (tos 0x20, ttl  50, id 32643, offset 0, flags [DF], proto: TCP (6), length: 485) 66.96.149.17.80 > 10.0.0.3.57929: P 1:446(445) ack 116 win 29200
    0x0000:  0025 64a1 6f2b 0000 ca11 2233 0800 4520  .%d.o+...."3..E.
    0x0010:  01e5 7f83 4000 3206 e5fb 4260 9511 0a00  ....@.2...B`....
    0x0020:  0003 0050 e249 8fd1 31c9 6b28 f147 5018  ...P.I..1.k(.GP.
    0x0030:  7210 dd6f 0000 4854 5450 2f31 2e31 2032  r..o..HTTP/1.1.2
    0x0040:  3030 204f 4b0d 0a44 6174 653a 2053 756e  00.OK..Date:.Sun
    0x0050:  2c20 3130 204d 6172 2032 3031 3920 3032  ,.10.Mar.2019.02


--- bad ---
IP (tos 0x0, ttl 128, id 23474, offset 0, flags [DF], proto: TCP (6), length: 171, bad cksum 0 (->bd26)!) 10.0.0.3.57928 > 66.96.149.17.80: P 1:132(131) ack 1 win 65535
    0x0000:  0000 ca11 2233 0025 64a1 6f2b 0800 4500  ...."3.%d.o+..E.
    0x0010:  00ab 5bb2 4000 8006 0000 0a00 0003 4260  ..[.@.........B`
    0x0020:  9511 e248 0050 d41f f5a8 1b81 c914 5018  ...H.P........P.
    0x0030:  ffff e211 0000 4745 5420 2f57 6562 444c  ......GET./WebDL
    0x0040:  322f 7570 6772 6164 6573 5f37 305f 5445  2/upgrades_70_TE
    0x0050:  5354 2e78 6d6c 2048 5454 502f 312e 310d  ST.xml.HTTP/1.1.
IP (tos 0x20, ttl  50, id 33346, offset 0, flags [DF], proto: TCP (6), length: 40) 66.96.149.17.80 > 10.0.0.3.57928: ., cksum 0xc7a5 (correct), 1:1(0) ack 132 win 30016
    0x0000:  0025 64a1 6f2b 0000 ca11 2233 0800 4520  .%d.o+...."3..E.
    0x0010:  0028 8242 4000 3206 e4f9 4260 9511 0a00  .(.B@.2...B`....
    0x0020:  0003 0050 e248 1b81 c914 d41f f62b 5010  ...P.H.......+P.
    0x0030:  7540 c7a5 0000 0000 4778 f4ff            u@......Gx..
IP (tos 0x20, ttl  50, id 33347, offset 0, flags [DF], proto: TCP (6), length: 469) 66.96.149.17.80 > 10.0.0.3.57928: P 1:430(429) ack 132 win 30016
    0x0000:  0025 64a1 6f2b 0000 ca11 2233 0800 4520  .%d.o+...."3..E.
    0x0010:  01d5 8243 4000 3206 e34b 4260 9511 0a00  ...C@.2..KB`....
    0x0020:  0003 0050 e248 1b81 c914 d41f f62b 5018  ...P.H.......+P.
    0x0030:  7540 8572 0000 4854 5450 2f31 2e31 2034  u@.r..HTTP/1.1.4
    0x0040:  3030 2042 6164 2052 6571 7565 7374 0d0a  00.Bad.Request..
    0x0050:  4461 7465 3a20 5375 6e2c 2031 3020 4d61  Date:.Sun,.10.Ma

0 个答案:

没有答案