【问题标题】:C++ WinHttp request is sent as TCP?C ++ WinHttp请求作为TCP发送?
【发布时间】: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


【解决方案1】:

可能是端口不是“80”。如果是这样,设置 Wireshark 将捕获的传输层解码为 HTTP(在接收端和发送端)

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2013-01-03
    • 2014-09-03
    • 2016-03-05
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多