Альтернатива HTTP HEAD

Я хотел проверить существование до того, как действительно ПОЛУЧУ элемент, и я планировал использовать запрос HEAD. Но у моего сервера проблемы с запросами HEAD.

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

Я не могу ничего изменить в своем сервере. Какие у меня есть альтернативы? Я действительно не хочу загружать элементы для проверки существования (элементы являются изображениями).


person user9910093    schedule 26.06.2018    source источник
comment
Я хотел проверить существование до того, как действительно ПОЛУЧУ предмет... Если вы все равно собираетесь получить предмет, как подразумевалось ранее, то почему это происходит? иметь значение?   -  person Michael - sqlbot    schedule 27.06.2018
comment
Если HEAD у вас не работает надежно, попробуйте использовать GET с заголовком Range, чтобы запросить только 1-й байт файла. Если код ответа равен 200, то диапазоны в этом файле не поддерживаются, и вы получаете весь файл (в этом случае просто закройте соединение, как только обнаружите код ответа). Если код ответа 206, диапазон был принят, и вы получаете только 1-й байт, отправленный вам.   -  person Remy Lebeau    schedule 27.06.2018
comment
Мой плохой Майкл, это была опечатка. Я не собираюсь делать запрос GET. Я попробую решение Реми.   -  person user9910093    schedule 27.06.2018


Ответы (1)


Можно использовать диапазоны HTTP, например, используя curl для получения первых 200 байтов. :

curl -r 0-199 http://example.com
person nbari    schedule 29.06.2018
comment
Это заставляет Cloudfront загружать весь файл с исходного сервера. Я не могу позволить себе такую ​​большую задержку. - person user9910093; 03.07.2018