Що таке файл 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 — це представлення 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 та його вбудованих пов’язаних об’єктів може повернути новішу версію.