我怎样才能让Wireshark向我展示我的本地HTTP流量?

时间:2014-09-09 19:12:20

标签: http asp.net-web-api fiddler wireshark postman

当我输入此URI以在我正在运行的Web API应用程序上调用REST方法时:

http://SHANNON2:21608/api/inventory/sendXML/duckbill/platypus/someFileName // using Hostname of local machine

- 或者这一个:

http://192.168.125.50:21608/api/inventory/sendXML/duckbill/platypus/someFileName // using IP Address of local machine

...在Postman中(使用HttpPost,并附加一个xml文件)并运行它,在Fiddler 2中检查它时,我在Fiddler的Inspectors.WebView窗格中看到了这个错误:

Bad Request - Invalid Hostname

--------------------------------------------------------------------------------

HTTP Error 400. The request hostname is invalid.

注意:即使我执行命中服务器上相应的Controller REST方法中的断点,我也会收到该错误。

尝试进一步检查发生了什么(正在发送什么HTTP),我运行Wireshark并仅查看此IP地址的目的地:

enter image description here

...以我的IP地址作为来源:

enter image description here

为什么没有HTTP协议条目?显然正在发送HTTP,因为我正在设置服务器控制器方法中第一行的断点:

[HttpPost]
[Route("api/inventory/sendXML/{userId}/{pwd}/{filename}")]
public async Task SendInventoryXML(String userId, String pwd, String fileName)
{
    Task task = Request.Content.ReadAsStreamAsync().ContinueWith(t =>
    {
        var stream = t.Result;
        using (FileStream fileStream = File.Create(String.Format(@"C:\HDP\{0}.xml", fileName), (int)stream.Length))
        {
            byte[] bytesInStream = new byte[stream.Length];
            stream.Read(bytesInStream, 0, (int)bytesInStream.Length);
            fileStream.Write(bytesInStream, 0, bytesInStream.Length);
        }
    });
}

那么为什么Wireshark在向我显示HTTP发送时如此秘密?它是否对内部沟通视而不见,如果是这样,我怎样才能释放它"告诉我那个?

更新

啊哈/瞧! Postman,RawCap(http://www.netresec.com/?page=RawCap)和Wireshark的组合似乎有效。我迅速用命令提示符运行新发现的RawCap:

RawCap.exe 192.168.125.50 captured.pcap

...然后从Postman调用REST方法,并在Wireshark中打开RawCap创建的结果文件(在我的情况下为captured.pcap),它向我显示了一些HTTP流量:

enter image description here

有关HTTP调用的更多详细信息,请参见此处:

enter image description here

我不知道的是如何关闭" RawCap优雅。

更新2

RawCap / Wireshark告诉我这是一个错误的请求(我已经知道是响应):

enter image description here

...但是我没有看到任何关于为什么被认为是错误请求的线索

更新3

当我尝试使用各种形式的" local"从Fiddler Composer调用我的REST方法时(主机名,IP地址," locohost"),我从未到达服务器中的断点;在此之前我得到了错误的消息(对于locohost为404,对于所有其他用户为400):

enter image description here

1 个答案:

答案 0 :(得分:2)

通常,Invalid Hostname表示HTTP请求的Host标头包含未绑定到Web服务器上任何站点的值。例如,您使用的是IP地址作为主机,但如果您的服务器仅配置为接受计算机名称(例如mybox),那么您将看到来自服务器的HTTP / 400要求您提供适当的主机名。