Является ли поле Content-MD5 в HTTP-ответе универсальным? - PullRequest
11 голосов
/ 28 ноября 2011

Я пытался загрузить файлы с разных серверов, НЕ все из них отвечают полем Content-MD5 в своих заголовках.

Я хотел бы знать, является ли это ответом стандарта HTTP без хэшафайл ресурса или нет?

спасибо

Ответы [ 3 ]

17 голосов
/ 28 ноября 2011

Поле заголовка Content-MD5 МОЖЕТ быть сгенерировано исходным сервером или клиентом для проверки целостности тела объекта.Только исходные серверы или клиенты МОГУТ генерировать поле заголовка Content-MD5;прокси-серверы и шлюзы НЕ ДОЛЖНЫ генерировать его, так как это приведет к потере его значения в качестве сквозной проверки целостности.Любой получатель тела объекта, включая шлюзы и прокси-серверы, МОЖЕТ проверить, что значение дайджеста в этом поле заголовка соответствует значению тела объекта, как получено

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

По состоянию на июнь 2014 года:

Поле заголовка Content-MD5 было удалено, поскольку оно было непоследовательно реализовано в отношении частичных ответов.

RFC7231 - Протокол передачи гипертекста (HTTP / 1.1): семантика и контент - http://tools.ietf.org/html/rfc7231 (стр. 92)

6 голосов
/ 29 ноября 2011

HTTPbis не поддерживает это поле заголовка (подробности см. http://trac.tools.ietf.org/wg/httpbis/trac/ticket/178).

0 голосов
/ 15 ноября 2016

Pure MD5 не поддерживает частичную проверку и устарел.Если вы попытаетесь использовать чистые хеш-функции для чего-то более сложного, в конечном итоге вы встретите следующую ситуацию :

Я не понимаю ... Как толькофайл готов к завершению, он начинается заново.Я также получаю сообщение «Проверка содержимого файла» ... Что мне делать ???

Что делать, если загружать файл размером более 20 ГБ без возможности раннего обнаружения несоответствия?Нельзя выгружать загрузки в p2p без частичной проверки, поддерживаемой хеш-функцией.

Так что в настоящее время нужно придерживаться деревьев Меркле.Gnutella (и G1, и G2), и DC ++ (и NMDC, и ADC) используют TTH (TIGER Tree Hash), в то время как eDonkey 2k использует AICH, но этот хеш используется один, и он менее элегантен.Таким образом, TTH является стандартом де-факто, и было бы неплохо, если бы все хэши файлов везде (даже если это строго не требуется) были TTH по умолчанию, но мы еще не сделали этого.

DC ++ не основан на HTTP,но Gnutella (1 и 2) есть, так что вы можете изучать и / или поддерживать эти заголовки HTTP.Например, Shareaza может перехватывать загрузки из браузеров и выгружать их в p2p, используя заголовки Alt-Location, Content-URN, X-Thex-URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...