Configurarea unor servere WWW pentru recunoasterea tipurilor MIME

Tipurile MIME si Web-ul

Radu Greab

Cred că o bună parte dintre cei care cititi acest articol v-ati realizat home-page-uri în care ati mai pus si grafică, si animatie, si sunet pentru a le face mai atractive si mai plăcute ochilor celor care vă vizitează. V-ati pus niste fisiere GIF sau J PEG, poate niste fisiere AVI sau MOV, sau fisiere WAV, MIDI si browser-ul le prezenta pe toate, sau aproape pe toate dacă nu aveati plug-in-ul corespunzător, asa cum v-ati fi asteptat. Navigatorul stie că gif-urile si jpeg-urile sunt imagini statice, st ia să pornească player-ul audio când era necesar. De unde stiu ele cum să prelucreze documentele pe care le descărcati de pe Web? Desi o indicatie asupra tipului documentelor o poate da extensia fisierului, acest lucru nu este întotdeauna adevărat. Dat orită restrictiei din străvechiul DOS de a denumi un fisier prin concatenarea unui nume de maxim opt caractere cu o extensie de cel mult trei caractere, cât si faptului că DOS-ul folosea această extensie spre a afla de exemplu care sunt fisierele execu tabile s-a ajuns la conventia ca extensia să ne dea o indicatie asupra datelor din fisierul respectiv. Astfel, fisierele ce contin text au extensia TXT, cele care contin imagini gif au extensia GIF, s.a.m.d. Odată cu aparitia în ultimii ani a unor sistem e de operare noi care să exploateze evolutia tehnologiilor din domeniul informaticii, a ajuns si lumea Windows cât de cât în rând cu sistemele serioase (Unix) în ceea ce priveste denumirile de fisiere. Au rămas însă niste limitări: un nume de fisier nu poate contine anumite caractere speciale, cum ar fi de exemplu „>“ sau „<“. Dar putem folosi acum denumiri formate din maxim 255 de caractere, lucru care ne permite denumiri mai sugestive pentru o organizare si o regăsire mai usoară a fisierelor. Dacă a vem un fisier text îl putem denumi de exemplu Scrisoare de la Mircea.txt.eng.gz ceea ce ar putea însemna că acest fisier contine text simplu, este în limba engleză si este comprimat cu gzip. Aveti astfel informatii mai clare despre tipul fisierului si nu mai trebuie să inventati tot felul de prescurtări pentru a vă conforma barier ei de 8 + 3.

Atunci când încărcati un fisier de pe discul local, navigatorul Dvs. încearcă să-i ghicească tipul folosindu-se de extensia fisierului. Dacă extensia este cunoscută, atunci navigatorul execută actiunea corespunzătoare (afisare, lansarea unei alte aplic atii care să prelucreze datele, etc.), iar în cazul în care nu se reuseste descifrarea tipului navigatorul va salva datele fără a le interpreta sau vă va cere să specificati un program căruia să-i transmită datele spre vizualizare.

În Internet, datorită diversitătii de platforme si sisteme, reprezentarea datelor astfel încât să fie posibil transferul informatiilor între sisteme diferite era o problemă. A apărut atunci protocolul MIME (Multipurpose Internet Mail Extensions) care sp ecifică modul de reprezentare si codare-decodare în timpul transportului a diferitelor tipuri de date transmise prin posta electronică.

În MIME, orice document are un anumit tip format dintr-un tip major si un subtip al acestuia. Tipurile majore corespund tipurilor documentelor multimedia: text pentru simple documente text, audio pentru „documente" de sunet, image pentru imagini, video p entru animatii, application pentru date binare neinterpretate sau date binare procesate de aplicatii specifice. Mai există si două tipuri majore numite compozite spre deosebire de cele cinci anterioare care sunt discrete: message - încapsulează un alt mesaj si multipart pentru mesaje care contin entităti diferite, de tipuri independente. Astfel, un document html are tipul text/html si este descris printr-un câmp MIME cu numele Content-Type si valoarea text/html: Content-Type: text/html.

Astfel, se ajunge la specificarea clară a tipului datelor continute într-un mesaj pentru ca toti agentii implicati în tratarea acestor mesaje să stie cum să le trateze.

În protocolul HTTP, comunicatia dintre clienti si servere se desfăsoară prin mesaje care au un format asemănător celui descris de protocolul MIME. Clientul adaugă mesajelor transmise serverului câmpul Content-Type si serverul procedează la fel cu mesajele trimise clientului. Detinatarul primeste astfel informatii despre tipul datelor transferate si nu mai e nevoit să încerce să „ghicească“ tipul. Protocolul HTTP introduce si conceptul de codare a continutului: Content-Encoding. Această codare nu se efectuează pentru a putea realiza o transmisie reusită cu un sistem mai restrictiv (codare în timpul transmisiei) ci este executată pentru a beneficia de unele avantaje. Codările curente sunt gzip si compress prin care spatiul ocupat pe disc poate fi redus drastic, mai ales pentru fisierele text.

Să vedem acum cum se configurează serverele WWW pentru o functionare corectă din punct de vedere al transferului de fisiere multimedia. Am ales serverul Apache, predominant în lumea Linux-ului si Internet Information Server si Personal Web Server de l a Microsoft, pentru Windows.

Serverul Apache este construit din mai multe module, iar modulul care are sarcina de a stabili tipul documentelor este mod_mime. Strategia de determinare a tipului MIME se bazează pe numele fisierelor. O parte din tipurile MIME presupun o anumită procesare din partea serverului (de exemplu application/x-httpd-cgi reprezintă scripturi cgi, text/x-server- parsed-html pentru documente html prelucrate de server), iar pentrul restul tipurilor prelucrarea îi este delegată navigatorului.

În viziunea Apache, numele de fisiere au următoarea formă:

nume_de_bază.tip_MIME.limbă.codare

Tipul MIME este dat de tip, limba în care e „scris" documentul este reprezentată de a doua extensie, iar ultima extensie reprezintă codarea documentului respectiv.

Distributia Apache contine un fisier denumit mime.types în care se face asocierea între extensiile uzuale de nume de fisiere si tipurile MIME. Implicit, serverul caută acest fisier în ServerRoot/conf/mime.types, dar locatia lui poate fi schimbată cu dir ectiva TypesConfig locatie_fisier.

Directivele legate de modulul MIME apar de obicei în fisierele generale de configurare ale serverului sau în fisierele .htaccess care particularizează comportarea serverului fată de anumite directoare. Iată câteva dintre ele:

În ceea ce priveste scripturile CGI sau FastCGI serverul asteaptă să primească explicit tipul mesajelor returnate. De aceea, primul lucru cu care răspunde un script este trimiterea tipului continutului mesajului.

La serverele Microsoft Internet Information Server si Personal Web Server memorarea asociatiilor dintre extensiile de fisiere si tipurile MIME se face în registri, pe calea

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap.

Cheile sunt de tip sir de caractere si au formatul: tip_MIME, extensie_fisier , parametru neutilizat, tipul gopher. Valoarea cheii este un sir nul de caractere.

Includerea obiectelor multimedia în documentele HTML se face folosind tagul EMBED. Acest tag are câteva atribute generale:

Există si atribute specifice tipului multimedia: pentru audio există de exemplu un parametru care controlează volumul, parametri care controlează momentele de timp la care să fie pornită sau oprită prezentarea.

Inserarea unui fisier de sunet care să fie prezentat în fundal atât timp cât utilizatorul citeste documentul se poate face astfel:

<EMBED SRC="8.mid" AUTOSTART="true" LOOP="true" HIDDEN="true">.

Microsoft, în al său Internet Explorer, introduce un tag pentru a realiza acelasi lucru, desi functionează si varianta de mai sus:

<BGSOUND SRC="8.mid">.

În principiu, fisierele de sunet pot fi midi, wav, au sau aif. Si Netscape si Internet Explorer se descurcă bine cu aceste formate.

Documentele video se includ cu acelasi tag, EMBED. Exemplu:

<EMBED SRC="flagloop.avi" WIDTH="120" HEIGHT="90">.

Mai multe obiecte multimedia pot fi combinate în acelasi document HTML:

<embed src="8.mid" hidden="true" loop="true" autostart="true">
<embed src="aif.aif" width="145" height="110" autostart="true" loop="true">
<embed src="flagloop.avi" width="120" height="90" autostart="true" loop="true">

adică un fisier de sunet în background - 8.mid , un fisier pentru care se afisează si controale - aif.aif, o animatie AVI.

Majoritatea serverelor HTTP si a navigatoarelor vin configurate corect pentru tipurile MIME, însă functionarea navigatoarelor diferă de la un producător la altul. Din această cauză este bine să păstrati, mai ales pentru lumea DOS + Windows, conventiil e legate de extensiile fisierelor.

Detaliile despre protocoalele MIME si HTTP le puteti găsi la http://ds.internic.net/rfc, iar despre multimedia în Netscape si Internet Explorer pe siturile firmelor care le produc.

Radu Greab este student la Universitatea Petru Maior din Tg.Mures si poate fi contactat la radu@uttgm.ro.

(C) Copyright Computer Press Agora