Управление MIME types. Поддержка WAP
MIME (Multipurpose Internet Mail Extensions) - стандарт для определения типа передаваемой информации и механизмов ее обработки. Описан в следующих документах: RFC2045, RFC2046, RFC2047, RFC2048, RFC2049.
В основном, стандарт предназначен для идентификации нетекстовой информации. Тип информации определяется в следующем формате: type/subtype.
Как это работает
На данный момент существуют следующие зарегистрированные типы, используемые в системе WWW:
- text - предназначен для описания всех "принципиально" текстовых форматов
- image - предназначен для описания графических форматов
- audio - предназначен для описания аудио форматов
- video - предназначен для описания видео форматов
- model - предназначен для описания форматов представления моделей (RFC2077)
- application - предназначен для тех форматов, которые не подходят к другим категориям, а также для тех, которым необходима обработка сторонними приложениями
Более подробную информацию о зарегистрированных в IANA (The Internet Assigned Numbers Authority - www.iana.org) типах MIME можно получить по адресу: http://www.iana.org/assignments/media-types/.
Определение типов MIME используется для согласования работы веб-сервера и браузера.
Алгоритм следующий:
1. Клиент запрашивает в браузере документ по адресу http://www.zenon.net/index.html. Браузер делает запрос документа:
GET /index.html HTTP/1.1 Host: www.zenon.net
2. Сервер "знает", что /index.html является документом HTML и ему соответствует mime-type text/html. Об этом сервер сообщает в заголовках своего ответа браузеру в поле Content-Type:
HTTP/1.1 200 OK Date: Wed, 27 Dec 2000 19:15:11 GMT Server: Apache/1.3.14 (Unix) PHP/3.0.16 FrontPage/3.0.4.2 mod_perl/1.24 AuthMySQL/2.20 Cache-Control: max-age=1800 Expires: Wed, 27 Dec 2000 19:45:11 GMT Connection: close Content-Type: text/html; charset=windows-1251
3. Браузер, получая в поле Content-Type: значение text/html, использует соответствующий механизм отображения.
Для того, чтобы описанный механизм работал согласно Вашим потребностям, необходимо правильно настроить работу веб-сервера и веб-браузера.
Настройка веб-сервера
Дальнейшее описание настроек веб-сервера будет приведено в соответствии с условиями предоставления услуг хостинга компанией Зенон Н.С.П. При работе по определенным типам тарифов некоторые возможности по настройке сервера могут быть недоступны, что будет оговариваться отдельно. Если Вы используете хостинг другого провайдера, проконсультируйтесь в соответствующей технической службе о тонкостях настроек.
Основные типы MIME описываются в конфигурационном файле mime.types, информацию из которого сервер считывает при запуске. Формат описания типов следующий:
MIME-type extension [extension] ...
Пример описания видео формата MPEG:
video/mpeg mpeg mpg mpe
В файле mime.types представлены форматы:
графические:
image/bmp bmp image/gif gif image/jpeg jpeg jpg jpe image/png png image/tiff tiff tif
аудио:
audio/basic au snd audio/midi mid midi kar audio/mpeg mpga mp2 mp3 audio/x-pn-realaudio ram rm audio/x-pn-realaudio-plugin rpm audio/x-realaudio ra audio/x-wav wav
видео:
video/mpeg mpeg mpg mpe video/quicktime qt mov video/x-msvideo avi video/x-sgi-movie movie
модели:
model/vrml wrl vrml
текстовые:
text/css css text/html html htm text/plain asc txt text/richtext rtx text/rtf rtf text/sgml sgml sgm text/xml xml
архивы:
application/x-gtar gtar application/x-tar tar application/zip zip
приложения Microsoft:
application/msword doc application/vnd.ms-excel xls application/vnd.ms-powerpoint ppt
типы MIME для корректной работы wap:
application/vnd.wap.wbxml wbxml application/vnd.wap.wmlc wmlc application/vnd.wap.wmlscriptc wmlsc image/vnd.wap.wbmp wbmp text/vnd.wap.wml wml text/vnd.wap.wmlscript wmls
другие приложения:
application/octet-stream bin dms lha exe class application/pdf pdf application/postscript ai eps ps application/x-shockwave-flash swf
В случае, если в приведенном выше списке Вы не нашли нужного Вам формата или Вам не подходят текущие описания форматов, Вы можете внести собственные изменения. Как это сделать и как воспользоваться возможностями, облегчающими выполнение некоторых задач, описано ниже.
Не для всех тарифов на хостинге "Зенон Н.С.П." возможно изменение файла mime.types, а также и остальных конфигурационных файлов, использующихся при запуске web-сервера. Стандартный файл mime.types, используемый по умолчанию, можно посмотреть, зайдя в Unix-Shell и выполнив команду:
less /www/conf/mime.types
Стоит также упомянуть о директивах, относящихся к типам MIME и используемых в httpd2.conf:
TypesConfig - определяет полный или относительный путь к файлу mime.types. Путь по умолчанию: conf/mime.types. Формат директивы:
TypesConfig path
DefaultType - определяет тип MIME по умолчанию, то есть для тех файлов, тип которых не определен в файле mime.types. Значение по умолчанию - text/plain. Формат директивы:
DefaultType MIME-type
Применение данной директивы удобно в тех случаях, когда на Вашем сервере возможно появление файлов с незарегистрированными расширениями. В таком случае для этого файла сервером будет выдаваться тип MIME согласно установкам директивы. Следует также отметить, что, если формат таких файлов не текстовый, то предпочтительнее устанавливать тип MIME application/octet-stream. В этом случае не будут производиться перекодировки, возможные при неправильном типе MIME, и пользователь получит файл в первоначальном виде.
Пример:
DefaultType application/octet-stream
Директива DefaultType, как и все директивы, которые будут описаны далее, также может быть использована в файле .htaccess. Соответственно, они могут быть использованы при работе по любому тарифу.
AddType - добавление типа MIME для файлов с определенными расширениями. Может также использоваться для переопределения типа MIME для ранее описанных расширений. Формат директивы:
AddType MIME-type extension [extension] ...
Директива используется как альтернатива изменения файла mime.types. Удобна в том случае, когда необходимо добавить новый или переопределить имеющийся тип MIME для файлов в определенной директории.
Например, в стандартном файле mime.types тип MIME application/x-gzip не связан ни с каким расширением, хотя стандартным расширением для файлов такого типа является gz. Эту ситуацию легко исправить, прописав в файле .htaccess директиву:
AddType application/x-gzip .gz
До последнего времени ярким примером использования директивы являлось "включение поддержки протокола wap". Вся процедура состояла из добавления определенного набора типов MIME:
AddType text/vnd.wap.wml .wml AddType application/vnd.wap.wmlc .wmlc AddType text/vnd.wap.wmlscript .wmls AddType application/vnd.wap.wmlscriptc .wmlsc AddType image/vnd.wap.wbmp .wbmp
На данный момент все эти типы MIME уже присутствуют в стандартных настройках серверов по тарифам хостинга.
Еще один пример. Возможно возникновение ситуации, когда необходимо предоставить wap-доступ к какой-либо директории с находящимися в ней html-файлами. Для этого в файле .htaccess, находящемся в этой директории, прописывается директива:
AddType text/vnd.wap.wml .html
После этого все файлы отдаются с корректным типом MIME. Следует учесть, что доступ к этой директории стандартными браузерами будет невозможен.
ForceType - переопределение типа MIME для всех файлов в директории. Формат директивы:
ForceType MIME-type
Пример: в какую-либо директорию нужно будет разместить текстовые файлы и не хотелось бы думать об их расширениях, а DefaultType установлен не text/plain. Для этой директории нужно установить:
ForceType text/plain
RemoveType - удаляет определение типа MIME для файлов с определенными расширениями. То есть для этих файлов тип MIME определяется согласно установкам директивы DefaultType. Формат директивы:
RemoveType extension [extension] ...
В продолжение последнего примера для директивы AddType. После переопределения типа MIME для файлов с расширением html можно вернуть тип MIME для этих файлов комбинацией следующих директив:
RemoveType text/vnd.wap.wml .html DefaultType text/html