Принудительно использовать браузер для загрузки больших файлов. - PullRequest
0 голосов
/ 12 июня 2018

Мой сервер содержит большие файлы для загрузки (файлы могут храниться на разных серверах, но не на веб-сервере).Мое намерение состоит в том, чтобы позволить браузеру использовать частичную загрузку, чтобы веб-сервер мог получить небольшой фрагмент файла вместо всего файла.

Но браузер (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

Журнал ответов № 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

Content-Length - это полный размер файла,Content-Range - это размер чанка.

Результат: Браузер считает, что чанк - это весь файл, и больше нет запросов диапазона HTTP.

Ответ № 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

Content-Length - это размер чанка, Content-Range - это размер чанка.

Результат: Браузер сообщает, что файл не загружен.

ВОПРОС:

Как мне ответить на запрос на отправку первого фрагмента большого файла.А браузер может автоматически загружать оставшиеся фрагменты, используя частичное содержимое.

...