我开发了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错误?
有关该问题的其他说明:
如果我将此代码提取到单独的独立应用程序中,则不会发生此问题。 (有时)如果我在InitInstance的开头附近从我们的应用程序调用此代码,就会发生这种情况。
将目标URL粘贴到浏览器中没有问题-xml页面永远不会失败。
该问题已由运行该应用程序早期版本的用户报告在该字段中。这使我认为这可能是服务器上突然出现的问题,而不是我们代码中的最新更改。
不仅仅是这个特定的xml文件出现错误-我已经尝试了很多,它们的行为都相同。
该服务器是公共域主机(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