为什么Web浏览器会发出两个下载mp3文件的请求?

时间:2014-05-01 00:53:03

标签: c# http webserver

我正在创建一个非常简单的Web服务器,其唯一目的是返回一个mp3文件。

// create server
TcpListener server = new TcpListener(8585);
server.Start();

while (true)
{
    // accept a new client
    using (var client = server.AcceptTcpClient())
    {                                        
        byte[] buffer = new byte[1024 * 2];

        var i = client.Client.Receive(buffer);

        // get request client sent us
        var request = System.Text.Encoding.UTF8.GetString(buffer, 0, i).ToLower();

        // if the browser is requesting an icon return
        if (request.Contains("/favicon.ico"))
        {
            continue;
        }

        // with fiddler when I downloaded great.mp3 I saved the response as a binary file to make sure I am returning the right output

        client.Client.Send(System.IO.File.ReadAllBytes("cheat.bin"));

    }
}

cheat.bin can be downloaded from here

它基本上由

组成
HTTP/1.1 200 OK
Server: Apache/2.2.3 (CentOS)
X-HOST: sipl-web-233.oddcast.com
X-TTSCache: HIT
X-TTSCacheInsert: NO
Content-Type: audio/mpeg
Access-Control-Allow-Origin: *
Vary: Accept-Encoding
Date: Thu, 01 May 2014 00:02:15 GMT
Content-Length: 5471
Connection: keep-alive

ID3���� .... rest of mp3 file!

所以我的问题是,为什么当我在网络浏览器上转到http://localhost:8585/getSong时,歌曲会被下载两次?换句话说,如果我在我的代码中放置一个断点,它两次。此外,在我第二次返回歌曲之前,我将无法在浏览器中播放音频。

我主要是要问这个问题。我不明白出了什么问题。

1 个答案:

答案 0 :(得分:2)

浏览器通常会在HTTP发出之前进行HTTP头呼叫吗?这可能是为什么?

https://ochronus.com/http-head-request-good-uses/

无论如何,我会使用类似Fiddler的内容来查看浏览器正在发出的HTTP请求。