Описание тегов html5 примеры использования mime типы реферат
Обновлено: 04.07.2024
Однако следующим и более прогрессивным шагом для обмена информацией в сети стала возможность файлового хранения и обмена. И речь идет уже не о каких-то смсках или электронных письмах. Стало возможным обмениваться файлами разнообразных видов, таких как музыкальные и видео записи, архивы данных и изображения вместе с аннотациями.
Управление и контроль этим процессом осуществляется благодаря Многоцелевым расширениям почты Интернета (сокращенно MIME от английского языка).
MIME – особый список данных и расширений для них, с помощью которых осуществляется пересылка информации в сети Интернет различного вида. Касательно языка программирования HTML, данная спецификация используется для управления отправкой форм и других информационных объектов, с возможностью их размещения на веб странице.
Перечень MIME-типов
Тип файла | Тип данных |
ai | application/postscript |
aif | audio/aiff |
aif | audio/x-aiff |
aiff | audio/aiff |
aiff | audio/x-aiff |
ani | application/x-navi-animation |
aos | application/x-nokia-9000-communicator-add-on-software |
aps | application/mime |
arc | application/octet-stream |
arj | application/arj |
arj | application/octet-stream |
art | image/x-jg |
asf | video/x-ms-asf |
asm | text/x-asm |
asp | text/asp |
asx | application/x-mplayer2 |
asx | video/x-ms-asf |
asx | video/x-ms-asf-plugin |
au | audio/basic |
au | audio/x-au |
avi | application/x-troff-msvideo |
avi | video/avi |
avi | video/msvideo |
avi | video/x-msvideo |
bin | application/mac-binary |
bin | application/macbinary |
bin | application/octet-stream |
bin | application/x-binary |
bin | application/x-macbinary |
bm | image/bmp |
bmp | image/bmp |
bmp | image/x-windows-bmp |
boo | application/book |
book | application/book |
c | text/x-c |
c++ | text/plain |
ccad | application/clariscad |
class | application/java |
class | application/java-byte-code |
class | application/x-java-class |
com | application/octet-stream |
com | text/plain |
conf | text/plain |
cpp | text/x-c |
cpt | application/mac-compactpro |
cpt | application/x-compactpro |
cpt | application/x-cpt |
css | application/x-pointplus |
css | text/css |
dcr | application/x-director |
def | text/plain |
dif | video/x-dv |
dir | application/x-director |
dl | video/dl |
dl | video/x-dl |
doc | application/msword |
dot | application/msword |
drw | application/drafting |
dvi | application/x-dvi |
dwg | application/acad |
dwg | image/vnd.dwg |
dwg | image/x-dwg |
dxf | application/dxf |
dxf | image/vnd.dwg |
dxf | image/x-dwg |
dxr | application/x-director |
exe | application/octet-stream |
gif | image/gif |
gz | application/x-compressed |
gz | application/x-gzip |
gzip | application/x-gzip |
gzip | multipart/x-gzip |
h | text/plain |
h | text/x-h |
hlp | application/hlp |
hlp | application/x-helpfile |
hlp | application/x-winhelp |
htc | text/x-component |
htm | text/html |
html | text/html |
htmls | text/html |
htt | text/webviewhtml |
ice | x-conference/x-cooltalk |
ico | image/x-icon |
inf | application/inf |
jam | audio/x-jam |
jav | text/plain |
jav | text/x-java-source |
java | text/plain |
java | text/x-java-source |
jcm | application/x-java-commerce |
jfif | image/jpeg |
jfif | image/pjpeg |
jfif-tbnl | image/jpeg |
jpe | image/jpeg |
jpe | image/pjpeg |
jpeg | image/jpeg |
jpeg | image/pjpeg |
jpg | image/jpeg |
jpg | image/pjpeg |
jps | image/x-jps |
js | application/x-javascript |
js | application/javascript |
js | application/ecmascript |
js | text/javascript |
js | text/ecmascript |
latex | application/x-latex |
lha | application/lha |
lha | application/octet-stream |
lha | application/x-lha |
lhx | application/octet-stream |
list | text/plain |
lsp | application/x-lisp |
lsp | text/x-script.lisp |
lst | text/plain |
lzh | application/octet-stream |
lzh | application/x-lzh |
lzx | application/lzx |
lzx | application/octet-stream |
lzx | application/x-lzx |
m3u | audio/x-mpequrl |
man | application/x-troff-man |
mid | application/x-midi |
mid | audio/midi |
mid | audio/x-mid |
mid | audio/x-midi |
mid | music/crescendo |
mid | x-music/x-midi |
midi | application/x-midi |
midi | audio/midi |
midi | audio/x-mid |
midi | audio/x-midi |
midi | music/crescendo |
midi | x-music/x-midi |
mod | audio/mod |
mod | audio/x-mod |
mov | video/quicktime |
movie | video/x-sgi-movie |
mp2 | audio/mpeg |
mp2 | audio/x-mpeg |
mp2 | video/mpeg |
mp2 | video/x-mpeg |
mp2 | video/x-mpeq2a |
mp3 | audio/mpeg3 |
mp3 | audio/x-mpeg-3 |
mp3 | video/mpeg |
mp3 | video/x-mpeg |
mp4 | video/mp4 |
mpa | audio/mpeg |
mpa | video/mpeg |
mpeg | video/mpeg |
mpg | audio/mpeg |
mpg | video/mpeg |
mpga | audio/mpeg |
pas | text/pascal |
pcl | application/vnd.hp-pcl |
pcl | application/x-pcl |
pct | image/x-pict |
pcx | image/x-pcx |
application/pdf | |
pic | image/pict |
pict | image/pict |
pl | text/plain |
pl | text/x-script.perl |
pm | image/x-xpixmap |
pm | text/x-script.perl-module |
pm4 | application/x-pagemaker |
pm5 | application/x-pagemaker |
png | image/png |
pot | application/mspowerpoint |
pot | application/vnd.ms-powerpoint |
ppa | application/vnd.ms-powerpoint |
pps | application/mspowerpoint |
pps | application/vnd.ms-powerpoint |
ppt | application/mspowerpoint |
ppt | application/powerpoint |
ppt | application/vnd.ms-powerpoint |
ppt | application/x-mspowerpoint |
ppz | application/mspowerpoint |
ps | application/postscript |
psd | application/octet-stream |
pwz | application/vnd.ms-powerpoint |
py | text/x-script.phyton |
pyc | applicaiton/x-bytecode.python |
qt | video/quicktime |
qtif | image/x-quicktime |
ra | audio/x-pn-realaudio |
ra | audio/x-pn-realaudio-plugin |
ra | audio/x-realaudio |
ram | audio/x-pn-realaudio |
rm | application/vnd.rn-realmedia |
rm | audio/x-pn-realaudio |
rpm | audio/x-pn-realaudio-plugin |
rtf | application/rtf |
rtf | application/x-rtf |
rtf | text/richtext |
rtx | application/rtf |
rtx | text/richtext |
rv | video/vnd.rn-realvideo |
sgml | text/sgml |
sgml | text/x-sgml |
sh | application/x-bsh |
sh | application/x-sh |
sh | application/x-shar |
sh | text/x-script.sh |
shtml | text/html |
shtml | text/x-server-parsed-html |
ssi | text/x-server-parsed-html |
tar | application/x-tar |
tcl | application/x-tcl |
tcl | text/x-script.tcl |
text | application/plain |
text | text/plain |
tgz | application/gnutar |
tgz | application/x-compressed |
tif | image/tiff |
tif | image/x-tiff |
tiff | image/tiff |
tiff | image/x-tiff |
txt | text/plain |
uri | text/uri-list |
vcd | application/x-cdlink |
vmd | application/vocaltec-media-desc |
vrml | application/x-vrml |
vrml | model/vrml |
vrml | x-world/x-vrml |
vsd | application/x-visio |
vst | application/x-visio |
vsw | application/x-visio |
wav | audio/wav |
wav | audio/x-wav |
wmf | windows/metafile |
xla | application/excel |
xla | application/x-excel |
xla | application/x-msexcel |
xlb | application/excel |
xlb | application/vnd.ms-excel |
xlb | application/x-excel |
xlc | application/excel |
xlc | application/vnd.ms-excel |
xlc | application/x-excel |
xld | application/excel |
xld | application/x-excel |
xlk | application/excel |
xlk | application/x-excel |
xll | application/excel |
xll | application/vnd.ms-excel |
xll | application/x-excel |
xlm | application/excel |
xlm | application/vnd.ms-excel |
xlm | application/x-excel |
xls | application/excel |
xls | application/vnd.ms-excel |
xls | application/x-excel |
xls | application/x-msexcel |
xlt | application/excel |
xlt | application/x-excel |
xlv | application/excel |
xlv | application/x-excel |
xlw | application/excel |
xlw | application/vnd.ms-excel |
xlw | application/x-excel |
xlw | application/x-msexcel |
xm | audio/xm |
xml | application/xml |
xml | text/xml |
z | application/x-compress |
z | application/x-compressed |
zip | application/x-compressed |
zip | application/x-zip-compressed |
zip | application/zip |
zip | multipart/x-zip |
В случае не определения одного из перечисленных форматов в спецификации файлу автоматически присвоится тип text/plain.
Что касается файлов HTML, то они распознаются протоколом без особых проблем. Им присваивается расширением text/html. Особая ситуация возникает при отправке файла формата XHTML. Для использования всех возможностей такого файла необходимо указывать для файла расширение application/xhtml+xml. В противном случае файлу присвоится согласно протоколам MIME расширение файла HTML, то есть text/plain.
Для примера рассмотрим работу с сервером Apache. Используем особую команду для работы в корневой папке сайта в файле .htaccess. Запись будет выглядеть следующим образом
Запись для работы с языком PHP выглядит несколько иначе. В заголовок записывается конструкция следующего плана
Для этого примера важно понимать, что расположение записи должно быть в максимально возможном высоком положении. Следующее замечание для этой записи заключается в следующем
Internet Explorer версией не выше 9.0 не может распознать документы типа application/xhtml+xml. остальные версии этого браузера считывают эту запись нормально, в том числе и все остальные браузеры.
Также не стоит злоупотреблять использования файла такого типа. Он станет полезным только если используется математическая символика MathML. Также такой формат будет очень полезен при использовании модуля графиков-векторов - SVG. В противном случае рациональней ограничиться файлом HTML, который расширит число браузеров, которые без проблем считают информацию с вашего веб-ресурса.
Также стоит отметить еще одну важную особенность работы MIME. Она заключается в том, что протокол позволяет осуществлять передачу файлов с несколькими вложениями. Проще говоря, позволяет осуществить передачу папки внутри которой находится еще несколько папок с файлами разнообразных форматов.
Простые пользователи домашнего компьютера также могут столкнуться со спецификациями типов MIME. Обычная программа помощник может не распознать формат какого-нибудь файла, в следствие чего она обратит к вам запрос на поиск другой программы для распознания этого файла.
Интересный факт про историю развития MIME-протокола.
Правообладатели MIME были очень удивлены и восторженны после того, как получили письмо от создателя протокола IMAP – Марка Криспина. Он прислал им письмо форматом mbox в качестве проверки MIME-протокола. По словам представителей MIME, это было сумасшедшее письмо с тридцатью вложенными друг в друга составляющими частями. Однако, они также отметили, что это лучшая проверка для протокола MIME.
Медиа тип (так же известный как Multipurpose Internet Mail Extensions или MIME тип) является стандартом, который описывает природу и формат документа, файла или набора байтов. Он определён и стандартизирован в спецификации RFC 6838 .
Организация Internet Assigned Numbers Authority (IANA) является ответственной за все официально признанные MIME типы, и вы можете найти самый последний и полный лист MIME типов на их странице Медиа Типов.
Важно: Для принятия решения о том, как обрабатывать URL, браузеры используют MIME типы, а не расширения файлов, так что серверам необходимо отправлять правильные MIME типы в Content-Type заголовке ответа. При неточном задавании этого заголовка, браузеры с большой вероятностью будут неправильно интерпретировать и обрабатывать содержание файлов, из-за чего сайт будет работать неверно.
Структура MIME типа
Простейший MIME тип состоит из типа и подтипа — двух строк разделённых наклонной чертой ( / ), без использования пробелов.
Тип представляет общую категорию, в которой находится тип данных, например video или text . Подтип же строго отождествляется с отдельным типом данных, представляемых данным MIME типом. Например, для MIME типа text , подтипы могут быть plain (простой текст), html (HTML source code) или calendar (для iCalendar/ . ics ).
Необязательный параметр может быть добавлен для указания дополнительных деталей
Например, для MIME типов категории text , необязательный параметр charset может быть задан для уточнения кодировки, используемой в документе. Для объявления, что пересылаемый файл имеет кодировку UTF-8, необходимо использовать MIME тип text/plain;charset=UTF-8 . При не указании параметра charset , его значение автоматически будет задано, как ASCII ( US - ASCII ), если в настройках браузера не будет определено иначе.
MIME типы являются нечувствительными к регистру, но традиционно их пишут строчными буквами, за исключением значений параметров.
Дискретные типы
application Список IANA Любой вид бинарных данных, явно не попадающих ни в одну другу группу типов. Данные, которые будут выполняться или как-либо интерпретироваться, или данные для выполнения, которых необходимо отдельное приложение. Для указания базового типа бинарных данных (данных без определённого типа) используют тип application/octet-stream . Другие распространённые примеры включают application/pdf , application/pkcs8 и application/zip . audio Список IANA Аудио или музыкальные данные. Примеры: audio/mpeg , audio/vorbis . example Тип, зарезервированный для написания примеров, отображающих использование MIME типов. Этот тип никогда не должен использоваться вне примеров кода или документации. example может так же использоваться, как подтип. font Список IANA Данные шрифтов. Распространённые примеры включают font / woff , font / ttf и font / otf . image Список IANA Изображения или графические данные, включая векторную и растровую графику, а так же анимированные версии форматов неподвижных изображений, таких как GIF или APNG. Распространённые примеры включают image/ jpeg , image / png и image / svg + xml . model Список IANA Данные моделей для 3D объектов или сцен. Примеры: model/3mf и model/vml . text Список IANA Любые текстовые данные, так или иначе доступные для чтения человеку, а так же исходный код или текстовые данные для программ. Примеры: text / plain , text / csv и text / html . video Список IANA Видео данные или файлы. Например, MP4 фильмы ( video / mp 4 ).
Любые текстовые документы без определённого подтипа стоит отправлять, как text/plain тип. Аналогичным образом, application/octet-stream тип подойдёт бинарным документам при неопределённом или неизвестном подтипе.
Многокомпонентные типы
Существуют два многокомпонентных типа:
Важные для Web-разработчиков MIME типы
application/octet-stream
text/plain
Этот тип является базовым для текстовых файлов. Несмотря на то, что он означает "неопределённые текстовые данные", браузеры всё равно могут его отображать.
Заметьте: text/plain не означает "любой вид текстовых данных". Если браузер ожидает получения какого-то конкретного типа текстовых данных, то с большой вероятностью он не будет считать text/plain подходящим типом. Например, при загрузке text/plain документа через элемент, браузер не будет его признать правильным CSS файлом и использовать для применения стилей. Только text/css тип должен использоваться для загрузки CSS документов.
text/css
CSS документы, используемые для стилизации web-страниц должны отправляться, как text/css тип. Большинство браузеров не смогут распознавать CSS документы, загруженные с отличным от text/css MIME типом.
text/html
Все HTML данные должны пересылаться с данным типом. Альтернативные MIME типы для XHTML (например, application/xhtml+xml ) почти не используются в настоящее время.
Заметьте: Используйте application/xml или application/xhtml+xml , когда вам необходим строгий синтаксический анализ документов, разделы или элементы, не принадлежащие к пространствам имён HTML/SVG/MathML.
text/javascript
Согласно HTML спецификации: при пересылке JavaScript файлов, всегда должен использоваться MIME тип text/javascript .
По исторически сложившимся причинам, MIME Sniffing Standard (стандарт, определяющий, как браузеры должны интерпретировать медиа типы и выяснять, как обрабатывать данные при неправильно заданных медиа типах) позволяет серверам отправлять JavaScript документы, используя один из нижеперечисленных типов:
- application/javascript
- application/ecmascript
- application/x-ecmascript
- application/x-javascript
- text/javascript
- text/ecmascript
- text/javascript1.0
- text/javascript1.1
- text/javascript1.2
- text/javascript1.3
- text/javascript1.4
- text/javascript1.5
- text/jscript
- text/livescript
- text/x-ecmascript
- text/x-javascript
Заметьте: Несмотря на то, что некоторые user agent могут поддерживать какие-то из вышеперечисленных типов, вы всегда должны использовать text / javascript . Это единственный MIME тип, который гарантированно будет работать в настоящее время и в будущем.
Иногда вы можете заметить использование text/javascript MIME типа в связке с параметром charset , для уточнения кодировки, в которой был написан файл. Такое определение MIME типа является неправильным, и в большинстве случаев браузеры не станут загружать скрипт, передаваемый с таким типом.
Типы изображений
Файлы, MIME типом которых является image , содержат в себе данные изображений. Подтип определяет, какой конкретный формат изображения представлен в данных.
Лишь несколько типов изображений достаточно распространены, чтобы безопасно использоваться на веб-страницах.
Аудио и видео типы
Так же как в случае с изображениями, стандарт HTML не обязывает браузеры поддерживать какие-либо определённые форматы и кодеки для и элементов, так что при их выборе, важно брать в расчёт целевую аудиторию и диапазон браузеров (а так же версии этих браузеров), которые она может использовать.
Наше руководство по медиа форматам предоставляет список общепринятых типов, включая информацию об особых случаях при их использовании, их недостатках, совместимости, а так же других деталях.
Руководства по аудио и видео кодекам перечисляют часто поддерживаемые браузерами кодеки, предоставляя детали по их совместимости и техническую информацию, например как много аудио каналов они поддерживают, какой тип сжатия используют, и так далее. Руководство по используемым в WebRTC кодекам развивает эту тему ещё дальше, конкретно описывая кодеки, поддерживаемые популярными браузерами, так чтобы вы могли выбрать кодеки, которые имеют наилучшую поддержку в диапазоне браузеров по вашему выбору.
Что касается MIME типов для аудио и видео файлов, то чаще всего они указывают на формат контейнера (тип файла). Необязательный параметр codecs может быть добавлен к MIME типу для более точного указания, какой кодек и параметры использовались для пересылаемого файла.
Ниже перечислены наиболее часто используемые на веб-страницах MIME типы. Обратите внимание, что это не полный перечень всех доступных типов. Более полный список поддерживаемых форматов может быть наеден в руководстве по медиа форматам.
MIME тип | Аудио или видео тип |
---|---|
audio/wave audio/wav audio/x-wav audio/x-pn-wav | Аудио файл WAVE формата. С PCM аудио кодеком (WAVE кодек "1"), считающимся наиболее поддерживаемым, а так же другими, имеющими ограниченную поддержку. |
audio/webm | Аудио файл формата WebM. С Vorbis и Opus официально поддерживаемыми WebM спецификацией аудио кодеками. |
video/webm | Видео файл, с возможной аудио дорожкой, формата WebM. С VP8 и VP9, как наиболее распространёнными видео кодеками; Vorbis и Opus, как наиболее распространёнными аудио кодеками. |
audio/ogg | Аудио файл формата OGG. С Vorbis, как наиболее распространённым аудио кодеком. Хотя на данный момент имеется поддержка и Opus кодека. |
video/ogg | Видео файл, с возможной аудио дорожкой, в формате OGG. Где Theora – наиболее часто встречающийся видео кодек и Vorbis - наиболее часто встречающийся аудио кодек. Хотя использование кодека Opus становится всё более распространённым. |
application/ogg | Аудио или видео формата OGG. Где Theora – наиболее часто встречающийся видео кодек и Vorbis - наиболее часто встречающийся аудио кодек. |
multipart/form-data
multipart/form-data тип может быть использован при отправке значений из заполненной HTML Формы на сервер.
-
Семенов Ю.А. (ГНЦ ИТЭФ) Павел Храмцов, Электронинформ, 1996 . Учебное пособие, П.Б. Храмцов, 1997.
7.1 Что такое MIME?
MIME означает "Multipurpose Internet Mail Extensions" (Многоцелевые расширения почтового стандарта Internet). Этот стандарт описывает, как пересылать по электронной почте исполняемые, графические, мультимедийные, смешанные данные. Типичные применения MIME - пересылка графических изображений, аудио, документов Word, программ и даже просто текстовых файлов, то есть, когда важно, чтобы входе пересылки не производилось никаких преобразований над данными. MIME также позволяет размечать письмо на части различных типов так, чтобы получатель (почтовая программа) мог определить, что делать с каждой из частей письма.
7.2 Для чего это нужно?
Так как файлы могут быть разными (.jpg, .doc, .pdf . ), браузер должен понимать, что с ними делать. Эту проблему решает стандарт "MIME - типы". Он сообщает клиенту, какой тип файлов получен, например:
Content-type: image/gif (графика GIF)
Content-type: image/jpeg (графика JPG)
7.3 Как это работает?
Формат MIME-типа - тип/подтип. Можно использовать символ *; например, следующий заголовок клиента означает, что принимаются документы во всех форматах:
Следующий заголовок клиента означает, что принимаются все типы формата text независимо от подтипа:
Серверы должны проверять данные о принимаемых типах, содержащиеся в заголовке Accept, и по возможности выдавать данные соответствующего типа. Большинство серверов определяют формат документа по расширению имени файла. Например, файлы с расширениями .htm и .html - это файлы в формате HTML, поэтому сервер посылает такой документ с типом text/html в заголовке Content-Type, пример:
Действия клиента при получении файла:
Если записи нет, то клиент использует свой список MIME-типов, в котором тип определяется по расширению имени файла.
Если тип в файле не найден, то клиент не знает что делать с этим файлом. Браузер в таком случае предлагает вам выбрать сами программу, которой надо передать файл.
7.4 Некоторые основные типы и подтипы MIME.
Первый стандарт - RFC1341 MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies N. Borenstein, N. Freed June 1992
Последняя версия (состоит из четырех частей) :
RFC2049 (Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples N. Freed, N. Borenstein November 1996)
RFC2048 (Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures N. Freed, J. Klensin, J. Postel November 1996)
RFC2047 (MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text K. Moore November 1996)
RFC2046 (Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types N. Freed, N. Borenstein November 1996)
RFC2045 (Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies N. Freed, N. Borenstein November 1996)
Text – текстовые типы.
Тип 'text' предназначен для пересылки текстовых материалов. Для обозначения языковой кодировки текста используется параметр "charset" для некоторых подтипов, включая подтип, "text/html", соответствующий простому (неформатированному) тексту.
Content-Type: text/html; charset=windows-1251
Основные подтипы:
Content-Type: text/html - html текст.
Content-Type: text/plain - простой текст.
Content-Type: text/x-server-parsed-html - файл созданный с помощью SSI
Content-Type: text/css - файл содержащий стили - css
Multipart - данные состоят из несколько частей разных типов.
Основные подтипы:
Content-Type: multipart/mixed - несколько частей разных типов (используется в e-mail)
Content-Type: multipart/alternative - одна из частей (используется в e-mail)
Content-Type: multipart/x-mixed-replace - после загрузки следующая часть заменяет предыдущею (используется в анимации)
Image - графические типы.
Основные подтипы:
Content-Type: image/gif - изображение gif.
Content-Type: image/jpeg - изображение jpeg.
Content-Type: image/tiff - изображение tiff.
Content-Type: image/bmp - изображение bmp
Audio - звуковые типы.
Основные подтипы:
Content-Type: audio/wav - звук в формате wav.
Content-Type: audio/midi - звук в формате midi
Content-Type: audio/mpeg - звук в формате mp3.
Content-Type: audio/vqf - звук в формате vqf
Content-Type: audio/x-pn-realaudio - звук в формате ram rm
Content-Type: audio/x-realaudio - звук в формате ra
Content-Type: audio/x-wav - звук в формате wav
Video – видео типы.
Основные подтипы:
Content-Type: video/avi - видео в формате avi.
Content-Type: video/mpeg - видео в формате mpeg.
Application - представляет данные какого-нибудь приложения.
Content-Type: application/msword; name=”Mydoc.doc”
Основные подтипы:
Content-Type: application/msword - программа MS Word
Content-Type: application/pdf - программа Acrobat Reader
Content-Type: application/rtf - программа MS Word
Content-Type: application/zip - разархиватор ZIP-архивов
7.5 Серверные приложения.
Приложения на сервер можно использовать для создания счетчиков, форумов, чатов, обработки статистики, организации доступа к базам данных и т.д.
Для этого нужно чтобы клиенты могли запускать или работать с приложениями на сервере.
7.5.1 Методы использования серверных приложений.
Запуск через CGI-шлюз. Эти приложения могут быть написаны на любых языках.
Преимущества:
- используются обычные программы (в случае Windows .bat, .exe и тд.)
- стандартизовано
Недостатки:
- при каждом вызове программы происходит ее запуск, что не есть быстро, и при большом количестве запросов, появляется много запущенных программ.
Приложения, работающие через Java Servlet.
Преимущества:
- платформо-независимость
- серверо-независимость
Недостатки:
- приложения на Java работаю медленнее
Приложения, написанные на Java и встроенные в HTML страницы (с расширением .JSP (JavaServer Pages)). В принципе это аналог скриптовых языков работающих через модуль (в место модуля в данном случае Java Servlet, а язык Java)
Преимущества:
- платформо-независимость
- серверо-независимость
- удобно использовать
Недостатки:
- приложения на Java работаю медленнее
7.5.2 Архитектура WWW сервера с учетом серверных приложений
Архитектура современного WWW сервера. На выходе с сервера всегда HTML, но сгенерированный приложением.
7.5.3 Примеры запросов к приложениям
В результате через CGI шлюз
Будет запущено приложение search.cgi
и будет передан запрос "text=сотрудники" приложению search.cgi
Приложение search.cgi вернет результат работы CGI-шлюзу
Будет передан запрос "text=сотрудники" интерпретатору PHP.
Интерпретатор будет выполнять команды search.php.
Интерпретатор вернет результат работы WWW-серверу.
Common Gateway Interface - стандарт для обмена данными между сервером и прикладной программой, которая запускается из-под сервера.
7.6.1 Механизмы обмена данными
Механизм можно разделить на четыре части:
7.6.1.1 Переменные окружения
При запуске внешней программы сервер создает специфические переменные окружения, через которые передает приложению, как служебную информацию, так и данные.
SERVER_NAME - определяет доменное имя сервера.
GATEWAY_INTERFACE - определяет версию протокола CGI.
SERVER_PROTOCOL - протокол сервера.
SERVER_SOFTWARE - версия сервера.
SERVER_PORT - определяет порт, по которому осуществляется взаимодействие.
REQUEST_METHOD - определяет метод, значения GET, POST, HEAD и т. п.
PATH_INFO - передает программе путь с переменными, часть URL переданный клиентом (т.е. относительный путь с переменными).
PATH_TRANSLATED - абсолютный путь, путь расположения программы на диске сервера.
Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
PATH_INFO = "/cgi-bin/search?text=ipm"
PATH_TRANSLATED = "/usr/local/etc/httpd/cgi-bin/search".
SCRIPT_NAME - относительный путь без переменных.
Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
PATH_INFO = "/cgi-bin/search?text=ipm"
SCRIPT_NAME = "/cgi-bin/search"
QUERY_STRING - переменная определяет содержание запроса к скрипту (все что после ?).
Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
QUERY_STRING -------> "text=ipm"
Идентификация пользователя и его машины:
REMOTE_HOST - доменный адрес машины клиента.
REMOTE_ADDR - IP-адрес машины клиента.
AUTH_TYPE - тип идентификации пользователя.
REMOTE_USER - используется для идентификации пользователя.
REMOTE_IDENT - данная переменная порождается сервером, если он поддерживает идентификацию пользователя по протоколу RFC-931. Рекомендовано использование этой переменной для первоначального использования скрипта.
Это продолжение моей (автора, Марка Боаса) статьи 2009 года "Native Audio in the browser" (англ., и дополненной в октябре 2010 --прим. перев.), которая объясняет основы работы аудио в HTML5. Возможно, стоит почитать сначала её, если вы хотите почувствовать работу тега и связанного с ним API. (Есть русский перевод, но в варианте от 2009 года.)
Теперь, через 2.5 года, пришло время посмотреть, как идут дела. При том, что многие продвинутые аудио API активно разрабатываются, улучшается воодушевляющая нас нативная браузерная поддержка звука — самое время вернуться в увлекательный мир тега .
Хороший способ понять, как идут дела — посмотреть несколько примеров использования, что мы увидим далее.
Как же нам начать? Есть несколько понятий, которые надо освоить для подготовки. Давайте сначала разберёмся в типах MIME.
■ Типы MIME
● Серверная часть
Их называют ещё интернет медиа-типами — это один из способов сделать так, чтобы ваша система знала, как работать с медиаданными.
Прежде всего, сервер должен быть настроен для правильной поддержки MIME-типов. В случае Apache это означает, что в .htaccess имеются строки:
Совет : Не делайте gzip-сжатие медиафайлов на сервере. Большинство форматов уже сжаты, и есть некоторая поддержка для остальных. Кроме того, в запасном решении с флешем, он не поддерживает сжатия медиаданных. |
● Клиентская часть
При описании источников данных в коде или разметке можно указать MIME-тип, который позволит браузеру определить данные правильно.
Самый надежный способ описать аудио HTML5 — примерно такой:
Здесь определяется тег и используемые источники данных. Браузер выберет только один — он не будет проигрывать их два или больше. В этом же коде размещаются резервные варианты обработки.
Вместе с адресом данных в атрибуте src указан атрибут type. Он не обязателен, но помогает браузеру узнать MIME-тип и кодеки для отдаваемого файла до того как он его загрузит. Если его нет, браузер пытается узнать тип из файла возможными способами.
Замечание : можно пропустить в атрибуте название кодека, но для надежности и эффективности я рекомендую помогать браузеру, давая максимум возможной информации. |
● Заранее узнать тип аудио поможет .canPlayType (наверное)
К счастью, API показывает, поддерживается ли данный формат файла в браузере. Но вначале — краткое описание того, как мы управляем тегом .
Если объект Audio описывается в HTML, доступ к объекту можно получить через DOM:
или, если определён id,
Как вариант, объект создаётся полностью на Javascript.
Если есть объект Audio, то есть доступ к его методам и свойствам. Для проверки поддержки форматов используют метод canPlayType с параметром — текстовым значением MIME-типа.
Можно даже явно указать кодек:
canPlayType возвращает одно из 3 значений:
1) probably,
2) maybe, или
3) "" (пустая строка).
Смысл получения этих странных типов истекает из общей странности ситуации, в которой находятся кодеки, пока мы судим о них по типу. Без реальной попытки воспроизведения браузер может только догадываться о применимости кодека.
Итого, для проверки поддержки делаем:
Здесь проверяется что canPlayType поддерживается ("!!" просто превращает объект строки в логический тип) и затем проверяется, что canPlayType нашего формата — не пустая строка. (Как-то нелогично с первой частью. Наверное, автор забыл упомянуть, что может вернуть undefined? --прим. перев.)
■ Поддержка различных кодеков в браузере
Посмотрим, как поддерживаются кодеки в современных браузерах.
Кодеки десктопных браузеров:
Десктопные версии | Номер | Поддержка кодеков |
---|---|---|
Internet Explorer | 9.0+ | MP3, AAC |
Chrome | 6.0+ | Ogg Vorbis, MP3, WAV (начиная с Chrome 9) |
Firefox | 3.6+ | Ogg Vorbis, WAV |
Safari | 5.0+ | MP3, AAC, WAV |
Opera | 10.0+ | Ogg Vorbis, WAV |
Мобильные браузеры | Версия | Поддержка кодеков |
---|---|---|
Opera Mobile | 11.0+ | Device-dependent |
Android | 2.3+ | Device-dependent |
Mobile Safari | (iPhone, iPad, iPod Touch) iOS 3.0+ | MP3, AAC |
Blackberry | 6.0+ | MP3, AAC |
Плохая новость — до сих пор нет договорённости об универсальной поддержке какого-либо кодека, поэтому сервер должен поддерживать и MP3, и Ogg Vorbis, чтобы максимально полно поддержать HTML5 Audio в браузерах.
Забавно : Android 2.2 поддерживает , но не . Чтобы воспроизводить аудио, нужно использовать тег . |
● Контейнеры, форматы и расширения файлов (и снова эти MIME-типы)
Выше я упоминал об известных аудиоформатах, но технически мы должны работать с их форматом контейнера. (Контейнер может содержать более одного формата — например, MP4 может содержать AAC и AAC+.)
Container | Format(s) | File Extensions | MIME Type | Codec String |
---|---|---|---|---|
MP3 | MP3 | .mp3 | audio/mpeg | mp3 |
MP4 | AAC, AAC+ | .mp4, .m4a, .aac | audio/mp4 | mp4a.40.5 |
OGA/OGG | Ogg Vorbis | .oga, .ogg | audio/ogg | vorbis |
WAV | PCM | .wav | audio/wav | 1 |
● Мы имеем и не боимся его использовать!
Ладно, мы кое-как запустили аудио-теги — и это работает. Что ещё хотелось бы сделать? Сейчас в каждом браузере элементы работают немного по-разному из-за настроек по умолчанию. Хочется немного подогнать их к единому виду. Для этого есть несколько свойств элемента .
Несколько самых используемых атрибутов:
Свойство | Описание | Возвращаемое значение |
---|---|---|
currentTime | позиция курсора проигрывателя | double (секунды) |
duration | длительность воспроизведения | double (секунды); только чтение |
muted | заглушен ли звук | boolean |
paused | остановлено ли воспроизведение | boolean |
volume | уровень громкости | double (от 0 до 1) |
Переменной duration присвоено значение длительности (в секундах) аудиоклипа.
■ Буферизация, поиск и временны́е диапазоны
Ситуация на этом фронте улучшается, разработчики браузеров начинают делать основную часть спецификации.
API даёт нам атрибуты buffered и seekable, когда хотим узнать, какая часть медиафайла была буферизована или предзагружена для воспроизведения без задержек. Они оба возвращают объект TimeRanges, который есть список интервалов — числа начала и конца.
● Атрибут buffered
Возвращает интервалы полностью загруженных участков файла. Небольшой пример:
● Объект TimeRanges
The TimeRanges object contains data on the parts on buffered media in the form of one or more — you guessed it — time ranges. A TimeRanges object consists of these properties:
Содержит данные о частях буферизованных участков медиафайла (один или более — сколько успело буферизоваться) и имеет свойства:
length — число интервалов,
start(index) — начальное время указанного интервала,
end(index) — конечное время указанного интервала
(отсчитывается от начала воспроизведения).
Забавно : По умолчанию размерность времени в JS Audio API — секунды, хотя традиционные функции в JS используют миллисекунды. |
Таким образом, в этом примере:
В каких случаях может быть больше одного буферизованного интервала? Пользователь кликает впереди, на небуферизованном участке шкалы на блоке проигрывателя. Объект начинает новую буферизацию от точки клика, и возникают 2 интервала буферизации.
Совет : Большинство аудио-проигрывателей позволяет перемещаться на новые позиции файла во время загрузки, выполняя ряд запросов на сервер. В Apache множественный доступ к файлу разрешён по умолчанию, но надо убедиться в этом для сервера с неизвестными настройками. |
Вы можете проверить TimeRanges вашего браузера с помощью этого удобного HTML5 Media Event Inspector.
● Атрибуты seeking и seekable
Поиск в контексте медиафайла — это заглядывание вперёд или назад в медиафайл. Обычно это происходит, когда ещё не закончена полная буферизация файла. Атрибут seeking используется для указания на то, что призошло событие "seeked". true означает, что часть файла ещё не загружена.
Продолжение следует.
Содержание следующей части:
Местные статьи и переводы по теме аудиотегов HTML5:
* Визуализация аудио в HTML5, 7 августа 2011
* Создаем кассетный магнитофон при помощи HTML5 Audio, 13 июля 2012
* Обработка звука через Audio Data API, 30 августа 2010
* HTML5 Audio и Game Development: баги браузеров, проблемы и их решения, идеи, 6 августа 2010
* Освоение HTML5 тега audio, 21 июля 2012
* Проблемы с HTML5 , 16 мая 2011
* Using HTML5 audio and video, last mod. 13 Jun 2012
Спасибо ShpuntiK за то, что он обратил внимание на полезность перевода этой статьи.
MIME (Multipurpose Internet Mail Extension, Многоцелевые расширения почты Интернета) — спецификация для передачи по сети файлов различного типа: изображений, музыки, текстов, видео, архивов и др. Указание MIME-типа используется в HTML обычно при передаче данных форм и вставки на страницу различных объектов.
Некоторые популярные MIME-типы и расширения файлов с ними связанных приведены в табл. 1.
Расширение файла | Тип данных |
---|---|
ai | application/postscript |
aif | audio/aiff |
aif | audio/x-aiff |
aiff | audio/aiff |
aiff | audio/x-aiff |
ani | application/x-navi-animation |
aos | application/x-nokia-9000-communicator-add-on-software |
aps | application/mime |
arc | application/octet-stream |
arj | application/arj |
arj | application/octet-stream |
art | image/x-jg |
asf | video/x-ms-asf |
asm | text/x-asm |
asp | text/asp |
asx | application/x-mplayer2 |
asx | video/x-ms-asf |
asx | video/x-ms-asf-plugin |
au | audio/basic |
au | audio/x-au |
avi | application/x-troff-msvideo |
avi | video/avi |
avi | video/msvideo |
avi | video/x-msvideo |
bin | application/mac-binary |
bin | application/macbinary |
bin | application/octet-stream |
bin | application/x-binary |
bin | application/x-macbinary |
bm | image/bmp |
bmp | image/bmp |
bmp | image/x-windows-bmp |
boo | application/book |
book | application/book |
c | text/x-c |
c++ | text/plain |
ccad | application/clariscad |
class | application/java |
class | application/java-byte-code |
class | application/x-java-class |
com | application/octet-stream |
com | text/plain |
conf | text/plain |
cpp | text/x-c |
cpt | application/mac-compactpro |
cpt | application/x-compactpro |
cpt | application/x-cpt |
css | application/x-pointplus |
css | text/css |
dcr | application/x-director |
def | text/plain |
dif | video/x-dv |
dir | application/x-director |
dl | video/dl |
dl | video/x-dl |
doc | application/msword |
dot | application/msword |
drw | application/drafting |
dvi | application/x-dvi |
dwg | application/acad |
dwg | image/vnd.dwg |
dwg | image/x-dwg |
dxf | application/dxf |
dxf | image/vnd.dwg |
dxf | image/x-dwg |
dxr | application/x-director |
exe | application/octet-stream |
gif | image/gif |
gz | application/x-compressed |
gz | application/x-gzip |
gzip | application/x-gzip |
gzip | multipart/x-gzip |
h | text/plain |
h | text/x-h |
hlp | application/hlp |
hlp | application/x-helpfile |
hlp | application/x-winhelp |
htc | text/x-component |
htm | text/html |
html | text/html |
htmls | text/html |
htt | text/webviewhtml |
ice | x-conference/x-cooltalk |
ico | image/x-icon |
inf | application/inf |
jam | audio/x-jam |
jav | text/plain |
jav | text/x-java-source |
java | text/plain |
java | text/x-java-source |
jcm | application/x-java-commerce |
jfif | image/jpeg |
jfif | image/pjpeg |
jfif-tbnl | image/jpeg |
jpe | image/jpeg |
jpe | image/pjpeg |
jpeg | image/jpeg |
jpeg | image/pjpeg |
jpg | image/jpeg |
jpg | image/pjpeg |
jps | image/x-jps |
js | application/x-javascript |
js | application/javascript |
js | application/ecmascript |
js | text/javascript |
js | text/ecmascript |
latex | application/x-latex |
lha | application/lha |
lha | application/octet-stream |
lha | application/x-lha |
lhx | application/octet-stream |
list | text/plain |
lsp | application/x-lisp |
lsp | text/x-script.lisp |
lst | text/plain |
lzh | application/octet-stream |
lzh | application/x-lzh |
lzx | application/lzx |
lzx | application/octet-stream |
lzx | application/x-lzx |
m3u | audio/x-mpequrl |
man | application/x-troff-man |
mid | application/x-midi |
mid | audio/midi |
mid | audio/x-mid |
mid | audio/x-midi |
mid | music/crescendo |
mid | x-music/x-midi |
midi | application/x-midi |
midi | audio/midi |
midi | audio/x-mid |
midi | audio/x-midi |
midi | music/crescendo |
midi | x-music/x-midi |
mod | audio/mod |
mod | audio/x-mod |
mov | video/quicktime |
movie | video/x-sgi-movie |
mp2 | audio/mpeg |
mp2 | audio/x-mpeg |
mp2 | video/mpeg |
mp2 | video/x-mpeg |
mp2 | video/x-mpeq2a |
mp3 | audio/mpeg3 |
mp3 | audio/x-mpeg-3 |
mp3 | video/mpeg |
mp3 | video/x-mpeg |
mp4 | video/mp4 |
mpa | audio/mpeg |
mpa | video/mpeg |
mpeg | video/mpeg |
mpg | audio/mpeg |
mpg | video/mpeg |
mpga | audio/mpeg |
pas | text/pascal |
pcl | application/vnd.hp-pcl |
pcl | application/x-pcl |
pct | image/x-pict |
pcx | image/x-pcx |
application/pdf | |
pic | image/pict |
pict | image/pict |
pl | text/plain |
pl | text/x-script.perl |
pm | image/x-xpixmap |
pm | text/x-script.perl-module |
pm4 | application/x-pagemaker |
pm5 | application/x-pagemaker |
png | image/png |
pot | application/mspowerpoint |
pot | application/vnd.ms-powerpoint |
ppa | application/vnd.ms-powerpoint |
pps | application/mspowerpoint |
pps | application/vnd.ms-powerpoint |
ppt | application/mspowerpoint |
ppt | application/powerpoint |
ppt | application/vnd.ms-powerpoint |
ppt | application/x-mspowerpoint |
ppz | application/mspowerpoint |
ps | application/postscript |
psd | application/octet-stream |
pwz | application/vnd.ms-powerpoint |
py | text/x-script.phyton |
pyc | applicaiton/x-bytecode.python |
qt | video/quicktime |
qtif | image/x-quicktime |
ra | audio/x-pn-realaudio |
ra | audio/x-pn-realaudio-plugin |
ra | audio/x-realaudio |
ram | audio/x-pn-realaudio |
rm | application/vnd.rn-realmedia |
rm | audio/x-pn-realaudio |
rpm | audio/x-pn-realaudio-plugin |
rtf | application/rtf |
rtf | application/x-rtf |
rtf | text/richtext |
rtx | application/rtf |
rtx | text/richtext |
rv | video/vnd.rn-realvideo |
sgml | text/sgml |
sgml | text/x-sgml |
sh | application/x-bsh |
sh | application/x-sh |
sh | application/x-shar |
sh | text/x-script.sh |
shtml | text/html |
shtml | text/x-server-parsed-html |
ssi | text/x-server-parsed-html |
tar | application/x-tar |
tcl | application/x-tcl |
tcl | text/x-script.tcl |
text | application/plain |
text | text/plain |
tgz | application/gnutar |
tgz | application/x-compressed |
tif | image/tiff |
tif | image/x-tiff |
tiff | image/tiff |
tiff | image/x-tiff |
txt | text/plain |
uri | text/uri-list |
vcd | application/x-cdlink |
vmd | application/vocaltec-media-desc |
vrml | application/x-vrml |
vrml | model/vrml |
vrml | x-world/x-vrml |
vsd | application/x-visio |
vst | application/x-visio |
vsw | application/x-visio |
wav | audio/wav |
wav | audio/x-wav |
wmf | windows/metafile |
xla | application/excel |
xla | application/x-excel |
xla | application/x-msexcel |
xlb | application/excel |
xlb | application/vnd.ms-excel |
xlb | application/x-excel |
xlc | application/excel |
xlc | application/vnd.ms-excel |
xlc | application/x-excel |
xld | application/excel |
xld | application/x-excel |
xlk | application/excel |
xlk | application/x-excel |
xll | application/excel |
xll | application/vnd.ms-excel |
xll | application/x-excel |
xlm | application/excel |
xlm | application/vnd.ms-excel |
xlm | application/x-excel |
xls | application/excel |
xls | application/vnd.ms-excel |
xls | application/x-excel |
xls | application/x-msexcel |
xlt | application/excel |
xlt | application/x-excel |
xlv | application/excel |
xlv | application/x-excel |
xlw | application/excel |
xlw | application/vnd.ms-excel |
xlw | application/x-excel |
xlw | application/x-msexcel |
xm | audio/xm |
xml | application/xml |
xml | text/xml |
z | application/x-compress |
z | application/x-compressed |
zip | application/x-compressed |
zip | application/x-zip-compressed |
zip | application/zip |
zip | multipart/x-zip |
Браузеры
Браузеры
В таблице браузеров применяются следующие обозначения.
- — элемент полностью поддерживается браузером;
- — элемент браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.
Число указывает версию браузреа, начиная с которой элемент поддерживается.
Читайте также: