Мы работаем над созданием многопоточного файлового прокси-сервера на языке C, где мы получаем запрос и получаем его из другого места с помощью библиотеки libcurl.
Библиотека дает вам возможность отправить запрос HEAD для получения некоторых параметров файла, таких как размер и т. Д.
Вы также можете получить эти параметры, когда фактически начнете обслуживать файл.
Коллега указал, что выполнение запроса HEAD с последующим немедленным получением файла является расточительным. Я согласен с ним, но мне было интересно, существует ли какой-либо вариант использования, в котором было бы полезно заранее узнать размер файла?
В дополнение к этому, существуют ли проблемы безопасности, когда мы запрашиваем размер файла перед его извлечением в сценарии прокси-файлового сервера?
В RFC уже все сказано:
9.4 ГОЛОВА
В
HEAD
метод идентиченGET
за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответе. Метаинформация, содержащаяся в заголовках HTTP в ответ наHEAD
запрос ДОЛЖЕН быть идентичен информации, отправленной в ответ наGET
запрос. Этот метод можно использовать для получения метаинформации об объекте, подразумеваемом запросом, без передачи самого тела объекта.
Этот метод часто используется для проверки гипертекстовых ссылок на достоверность, доступность и недавние изменения.
Я бы ожидал, что прокси будет в основном использовать HEAD
запрос, чтобы определить, действителен ли уже кэшированный объект и может ли он быть возвращен вместо начала новой загрузки.