【发布时间】:2014-05-24 15:59:09
【问题描述】:
这是我的代码:http://pastebin.com/znrwaT0n
当您按 Enter 时,它应该向 www.google.com 发送一个通常的 HTTP GET 请求。
如您所见,它也成功接收了 HTML 代码。
但是由于某种原因,Wireshark 和其他网络监视器没有检测到它是作为 HTTP 请求发送的,它们只是将其标记为 TCP(而其他 HTTP 请求被标记为“HTTP”)并且数据似乎不可读人类。
您能否解释一下为什么会发生这种情况,有什么副作用以及如何避免它?
【问题讨论】:
-
也许你可以发布一个wireshark捕获?比较您的请求和浏览器
-
你是碰巧碰到 HTTPS 吗? Wireshark 的
http过滤器默认只对 80 端口有效。 -
这实际上似乎是一个 https 问题。向哪个服务器发送请求并不重要,每次都是 https。我怎样才能禁用它?这是捕获:11 5.184325000 192.168.2.105 198.252.206.16 TCP 66 49965 > https [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
-
我解决了。我必须将端口设置为 INTERNET_DEFAULT_HTTP_PORT 并将 WinHttpOpenRequest() 中的标志设置为 NULL。
-
虽然我想知道为什么 Fiddler 没有收到请求。 oO 这是它在 Wireshark 中的样子:16 3.432776000 192.168.2.105 198.252.206.16 HTTP 207 GET / HTTP/1.1
标签: c++ http tcp httprequest wireshark