Мой сервер содержит большие файлы для загрузки (файлы могут храниться на разных серверах, но не на веб-сервере).Мое намерение состоит в том, чтобы позволить браузеру использовать частичную загрузку, чтобы веб-сервер мог получить небольшой фрагмент файла вместо всего файла.
Но браузер (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
- это размер чанка.
Результат: Браузер сообщает, что файл не загружен.
ВОПРОС:
Как мне ответить на запрос на отправку первого фрагмента большого файла.А браузер может автоматически загружать оставшиеся фрагменты, используя частичное содержимое.