Я попытался загрузить файлы с разных серверов, а не все они отвечают поля Content-MD5 в своих заголовках.
Я хотел знать, является ли это стандартом для ответа HTTP без хэша файла ресурсов или нет?
спасибо
Я попытался загрузить файлы с разных серверов, а не все они отвечают поля Content-MD5 в своих заголовках.
Я хотел знать, является ли это стандартом для ответа HTTP без хэша файла ресурсов или нет?
спасибо
Поле заголовка Content-MD5 MAY будет сгенерировано исходным сервером или клиентом для работы в качестве проверки целостности объекта-объекта. Только исходные серверы или клиенты MAY генерируют поле заголовка Content-MD5; прокси и шлюзы НЕ ДОЛЖНЫ генерировать его, так как это может привести к его значению как сквозной проверки целостности. Любой получатель сущности, включая шлюзы и прокси, МАЙ, проверяет, что значение дайджеста в этом поле заголовка соответствует значению тела объекта в виде приема
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
По состоянию на июнь 2014 года:
Поле заголовка Content-MD5 было удалено, поскольку оно было несовместимо с частичными ответами.
RFC 7231 - Протокол передачи гипертекста (HTTP/1.1): семантика и контент - http://tools.ietf.org/html/rfc7231 (стр. 92)
HTTPbis обесценивает это поле заголовка (подробнее см. http://trac.tools.ietf.org/wg/httpbis/trac/ticket/178).
Pure MD5 не поддерживает частичную проверку и устаревает. Если вы попытаетесь использовать чистые хеш-функции для чего-то продвинутого, в конце концов вы встретите следующую ситуацию:
Я не понимаю... Как только файл готов к завершению, он запускает все снова. Я также получаю сообщение "Проверка содержимого файла"... Что я должен сделать???
Что делать, если вы загружаете более 20 Гб файла, не имея возможности обнаружить несоответствие раньше? Нельзя загружать загружаемые файлы на p2p без частичной проверки, поддерживаемой хэш-функцией.
Итак, теперь нужно придерживаться деревьев Меркле. Gnutella (как G1, так и G2) и DС++ (как NMDC, так и ADC) используют TTH (TIGER Tree Hash), в то время как eDonkey 2k использует AICH, но один использует этот хеш, и он менее изящный. Таким образом, TTH является стандартом де-факто, и было бы неплохо, если бы все хэши файлов повсюду (даже если это не было строго необходимо) были по умолчанию TTH, но мы еще не были.
DС++ не основан на HTTP, но Gnutella (1 и 2) есть, поэтому вы можете изучать и/или поддерживать эти HTTP-заголовки. Например, Shareaza может перехватывать загрузки из браузеров и выгружать их в p2p, используя заголовки Alt-Location, Content-URN, X-Thex-URI.