Назад | Перейти на главную страницу

Получение размера файла перед загрузкой на прокси-сервер

Мы работаем над созданием многопоточного файлового прокси-сервера на языке C, где мы получаем запрос и получаем его из другого места с помощью библиотеки libcurl.

Библиотека дает вам возможность отправить запрос HEAD для получения некоторых параметров файла, таких как размер и т. Д.

Вы также можете получить эти параметры, когда фактически начнете обслуживать файл.

Коллега указал, что выполнение запроса HEAD с последующим немедленным получением файла является расточительным. Я согласен с ним, но мне было интересно, существует ли какой-либо вариант использования, в котором было бы полезно заранее узнать размер файла?

В дополнение к этому, существуют ли проблемы безопасности, когда мы запрашиваем размер файла перед его извлечением в сценарии прокси-файлового сервера?

В RFC уже все сказано:

9.4 ГОЛОВА

В HEAD метод идентичен GET за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответе. Метаинформация, содержащаяся в заголовках HTTP в ответ на HEAD запрос ДОЛЖЕН быть идентичен информации, отправленной в ответ на GET запрос. Этот метод можно использовать для получения метаинформации об объекте, подразумеваемом запросом, без передачи самого тела объекта.
Этот метод часто используется для проверки гипертекстовых ссылок на достоверность, доступность и недавние изменения.

Я бы ожидал, что прокси будет в основном использовать HEAD запрос, чтобы определить, действителен ли уже кэшированный объект и может ли он быть возвращен вместо начала новой загрузки.