强制浏览器使用部分内容下载大文件

Ale*_*hen 6 http download fileserver

我的服务器托管要下载的大文件(文件可能存储在不同的文件服务器中,但不会存储在 Web 服务器中)。我的目的是让浏览器使用部分下载,以便网络服务器可以获取文件的一小部分而不是整个文件。

但是浏览器(chrome 66)发送的第一个 HTTP GET 请求没有Range. 所以我必须回复Status: 200 OK

要求:

GET http://fakefile/falke HTTP/1.1
Host: fakefile
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Run Code Online (Sandbox Code Playgroud)

响应路径 #1:

HTTP/1.1 200 OK
Date: Tue, 12 Jun 2018 04:58:58 GMT
Content-Type: text/plain
Content-Length: 8205926
Connection: keep-alive
Content-Range: bytes 0-1048575/8205926
Content-Disposition: attachment; filename="301050.11051.input.txt"
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)

Content-Length是整个文件的大小,Content-Range是块的大小。

结果:浏览器认为 chunk 是整个文件,不再有 HTTP range 请求。

响应路径#2:

HTTP/1.1 206 Partial Content
Date: Tue, 12 Jun 2018 04:58:58 GMT
Content-Type: text/plain
Content-Length: 1048576
Connection: keep-alive
Content-Range: bytes 0-1048575/8205926
Content-Disposition: attachment; filename="301050.11051.input.txt"
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)

Content-Length是块的大小,Content-Range是块的大小。

结果:浏览器告诉文件未下载。

题:

如何响应发送大文件的第一个块的请求。并且浏览器可以使用部分内容自动下载剩余的块。