.MHTML вариант №
Файлы с расширением MHTML представляют собой формат архива веб-страницы, который может быть создан рядом различных приложений. Этот формат известен как формат архива, поскольку он сохраняет веб-код HTML и связанные ресурсы в одном файле. Эти ресурсы включают все, что связано с веб-страницей, например изображения, апплеты, анимацию, аудиофайлы и так далее. Файлы MHTML можно открывать в различных приложениях, таких как Internet Explorer и Microsoft Word. Microsoft Windows использует формат файла MHTML для записи сценариев проблем, наблюдаемых при использовании любого приложения в Windows, которое вызывает проблемы. Формат файла MHTML кодирует содержимое страницы аналогично спецификациям, определенным в message/rfc822, который представляет собой спецификации, связанные с электронной почтой в виде обычного текста. Фактические спецификации формата подробно описаны в RFC 2557.
Формат файла MHTML
MHTML также известен как MIME-инкапсуляция совокупных HTML-документов за его способность кодировать веб-страницы HTML вместе со своими ресурсами в единый веб-архив. Согласно спецификациям RFC 2557, совокупный документ представляет собой сообщение в кодировке MIME, которое содержит корневой ресурс (объект), а также другие ресурсы, связанные с ним через URI. Такие другие ресурсы могут представлять собой встроенные изображения, таблицы стилей, апплеты и т. д. Кроме того, они могут быть корнем других мультимедийных документов. Полные спецификации документа для формата файлов MHTML подробно описаны в RFC 2557, и их следует использовать при разработке любых приложений для чтения/записи файлов этого формата. Стандарт указывает, что части тела, на которые следует ссылаться, могут быть идентифицированы либо по Content-ID, либо по Content-Location.
Заголовки содержимого MIME
Заголовок содержимого MIME, Content-Location, определен для разрешения ссылок URI на ресурсы в других частях тела. Этот заголовок может встречаться в любом заголовке сообщения или содержимого.
Заголовок Content-Location
Content-Location — это представление URI, которое помечает содержимое части тела, в которой оно размещено. Его значение может быть абсолютным или относительным URI. Его можно использовать для обозначения ресурса, который не может быть извлечен некоторыми или всеми получателями сообщения. Одно сообщение может иметь только один заголовок Content-Location. Пример составной/связанной структуры, содержащей части тела с метками Content-Location и Content-ID:
Content-Type: multipart/related; boundary#"boundary-example";
type#"text/html"
--boundary-example
Content-Type: text/html; charset#"US-ASCII"
... ... <IMG SRC#"fiction1/fiction2"> ... ...
... ... <IMG SRC#"cid:97116092811xyz@foo.bar.net"> ... ...
--boundary-example
Content-Type: image/gif
Content-ID: <97116092511xyz@foo.bar.net>
Content-Location: fiction1/fiction2
--boundary-example
Content-Type: image/gif
Content-ID: <97116092811xyz@foo.bar.net>
Content-Location: fiction1/fiction3
--boundary-example--
URI агрегатов MHTML
URI агрегата MHTML отличается от URI его корневого URI. Поле заголовка Content-Location должно применяться ко всему агрегату, если оно используется в заголовке составного/связанного заголовка. Точно так же набор извлеченных ресурсов может отличаться от набора ресурсов, извлеченных с использованием Content-Locations его частей, когда URI, относящийся к агрегату MHTML, используется для извлечения этого агрегата. Например, при извлечении агрегата MHTML может быть возвращена старая версия, а при извлечении корневого URI и его встроенных связанных объектов может быть возвращена более новая версия.