JustPaste.it

Typy MIME stron internetowych

Ten artykuł wyjaśnia przyczynę problemu, jakim jest wyświetlanie źródła strony zamiast niej samej. Podaje również odpowiednie typy mediów dla stron HTML oraz XHTML.

Co to jest MIME?

Multipurpose Internet Mail Extensions (MIME) jest standardem opisu różnego typu informacji. Początkowo był sposobem na wysyłanie e-mailem danych innych, niż czysty tekst. Z czasem jednak jego funkcjonalność rozszerzyła się do określania rodzaju plików umieszczonych w Internecie.

Każdy rodzaj danych (dokumenty HTML, arkusze stylów, obrazy, pliki audio, wideo i inne) posiada swój własny typ MIME.

RFC 2045 i RFC 2046 definiują 5 podstawowych i 2 dodatkowe (złożone) typy mediów:

  • text - dane tekstowe,
  • image - obrazy,
  • audio - dane audio,
  • video - dane wideo,
  • application - inne rodzaje danych,
  • multipart - dane zawierające wiele niezależnych typów danych,
  • message - część innej wiadomości (załącznik maila) albo pofragmentowana wiadomość (dzielone maile).

Text/plain i text/html a jego wyświetlanie w przeglądarkach

Istnieje kilka różnych typów danych tekstowych - text/plain jest podstawowym typem MIME dla takiego rodzaju danych. Wskazuje na to, że mamy do czynienia z czystym tekstem, bez żadnych reguł formatujących. Źródło tekstu i jego wynik są identyczne.

Do wyświetlania dokumentów HTML służy typ MIME text/html. Ten typ mówi przeglądarce, że ma do czynienia nie ze zwykłym tekstem, ale ze sformatowanym dokumentem, który trzeba odpowiednio zinterpretować. Rodzaj interpretacji zależy od definicji typu dokumentu.

Jeśli serwer będzie niepoprawnie skonfigurowany i będzie wysyłał dokument HTML jako text/plain, a nie jako text/html, to nowoczesne przeglądarki zachowają się poprawnie i wyświetlą źródło strony (czyli czysty tekst), a nie wynik w postaci sformatowanego dokumentu. Jedynie IE zdoła wyświetlić taką stronę internetową. Czyni to dlatego, że błędnie rozpoznaje rodzaj dokumentu nie przez typ MIME, a przez rozszerzenie pliku.

Rozwiązanie problemu wyświetlania się źródła strony, a nie właściwego dokumentu, jest bardzo proste. Wystarczy w konfiguracji serwera ustawić prawidłowy typ MIME danego pliku (najczęściej jest to kwestia zmiany MIME z text/plain na text/html). Zostanie on wtedy wyświetlony prawidłowo we wszystkich przeglądarkach, nie tylko w IE.

W PHP istnieje funkcja header(), wysyłająca odpowiedni nagłówek HTTP. Za jej pomocą można zadeklarować odpowiedni typ MIME, gdy nie ma dostępu do konfiguracji serwera. Funkcja ta wygląda następująco:

<?php header("Content-Type: text/html"); ?>

MIME dla dokumentów (X)HTML

W3C przewiduje 4 typy mediów dla dokumentów (X)HTML.

Text/html jest podstawowym typem MIME dla dokumentów HTML, ale nie dla dokumentów XHTML. Może być używany w przejściowej wersji - XHTML 1.0 Transitional.

Dwa kolejne typy MIME - application/xml oraz text/xml - służą do określania dokumentów XML. Dokumenty XHTML mogą być serwowane jako application/xml albo text/xml, ale należy zauważyć, że w różnych programach przetwarzających XML (m.in. przeglądarkach) dokument może być nieprawidłowo przetworzony (np. odnośniki mogą zostać nierozpoznane).

Dlatego dokumenty powinny być serwowane jako application/xhtml+xml. Ten typ mediów jest przejściowym typem MIME między dokumentami HTML a XML, przeznaczonym specjalnie dla dokumentów XHTML.

Tabela zestawiająca MIME dla różnego typu dokumentów (X)HTML najlepiej pokazuje, jaki typ MIME powinien mieć dany dokument.

Serwowanie dokumentów XHTML jako application/xhtml+xml wymusza pisanie poprawnego kodu. W przypadku popełnienia jakiegokolwiek błędu (np. złe osadzenie znacznika, niedomknięty znacznik), przeglądarka nie przetworzy strony i nie wyświetli jej prawidłowo. XHTML podany jako text/html nie będzie przetworzony jak XML i błędy formatowania mogą nie zostać wykryte.

Niestety, nie wszystkie przeglądarki potrafią poradzić sobie z dokumentem XHTML serwowanym jako application/xhtml+xml (zobacz tabelę obrazującą obsługę różnych typów mediów przez popularniejsze przeglądarki). Wśród przeglądarek niepotrafiących poradzić sobie z obsługą application/xhtml+xml znajdziemy również tę najpopularniejszą - Microsoft Internet Explorer. Żadna z wersji IE nie potrafi prawidłowo poradzić sobie z poprawnie podanym dokumentem XHTML.

Problem ten można rozwiązać, podając przeglądarkom taki typ MIME, z jakim potrafią sobie one poradzić. Służy do tego zastosowanie na serwerze odpowiedniego Content Negotiation. Poradnik Specyfing a MIME Type szczegółowo wyjaśnia te kwestie, podając również sposoby prawidłowego zastosowania Content Negotiation dla różnych typów języków interpretowanych po stronie serwera.

 

Źródło: http://osiolki.net/faq/mime