Vyhledávání na webu

HTTP hlavičky - Rozdíl mezi typy obsahu application/x-javascript a text/javascript


Jaký je rozdíl mezi těmito hlavičkami?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript

Který je nejlepší a proč?

Prosím, neříkejte, že jsou identické - kdyby byly identické, nebyly by jich tři. Vím, že obě fungují - ale rád bych věděl rozdíl.

Odpověď č. 1

Typ MIME JavaScriptu

Při odesílání obsahu JavaScript byste měli používat text/javascript podle RFC 9239.

Alias

application/javascript, application/x-javascript, text/javascript1.0, text/javascript1.1, text/javascript1.2, text/javascript1.3, text/javascript1.4, text/javascript1.5, text/jscript a text/livescript jsou zastaralé aliasy pro něj. Pokud píšete nástroj, který používá JavaScript (např. HTTP klient), měli byste zvážit jejich podporu pro zpětnou kompatibilitu.

Historie

MIME typ text/javascript byl používán z konvence, dokud se RFC 4329 nepokusilo nahradit jej application/javascript.

Šlo jen o změnu, aby měly skupiny MIME typů text/* a application/* tam, kde to bylo možné, konzistentní význam. (text/* MIME typy jsou určeny pro obsah čitelný lidmi, JavaScript není navržen tak, aby přímo předával význam lidem).

Průmysl specifikaci z velké části ignoroval, takže současná specifikace vzdala pokus.

Předpony X-

Některé MIME typy zmíněné zde používají předponu x-. Ta byla používána k označení experimentálních MIME typů, které nebyly standardizovány. Podle RFC 6648 je tato konvence zastaralá.

HTML

Ačkoli se tato otázka týká HTTP, stojí za zmínku související atribut type v HTML.

Při načítání tradičního skriptu doporučuji úplně vynechat atribut type. Nemá žádný efekt, ale poskytuje příležitost k překlepu, který způsobí, že prohlížeč jej bude považovat za odkaz na nerozpoznaný typ skriptu a ignoruje ho. Pokud jej budete uvádět, použijte text/javascript, protože některé zastaralé MIME typy nebudou rozpoznány.

Při načítání modulu JavaScript použijte type="module" (uvědomte si, že tato hodnota není MIME typ!).

Odpověď č. 2

Typy MIME začínající x- nejsou standardizované. V případě JavaScriptu jsou poněkud zastaralé. Dále druhý úryvek kódu

<?Header('Content-Type: text/javascript');?>

vyžaduje, aby bylo povoleno short_open_tags. Měli byste se tomu vyhnout.

<?php Header('Content-Type: text/javascript');?>

Nicméně zcela správný mime typ pro javascript je

application/javascript

http://www.iana.org/assignments/media-types/application/index.html

Odpověď č. 3

Od května 2022 je text/javascript opět preferovaným typem (viz RFC 9239)

Registrace typů médií zde jsou rozděleny do dvou hlavních kategorií: (1) jediný typ média „text/javascript“, který je nyní běžně používán, a (2) všechny typy médií, které jsou zastaralé

A

Všechny registrace budou odkazovat na tento dokument jako na referenci. Byla odstraněna zastaralá poznámka uvádějící, že mediální typ „text/javascript“ byl „ZASTARALÝ ve prospěch application/javascript“. Byla odstraněna zastaralá poznámka uvádějící, že mediální typ „text/ecmascript“ byl „ZASTARALÝ ve prospěch application/ecmascript“. IANA přidala poznámku „ZASTARALÝ ve prospěch text/javascript“ ke všem registracím kromě „text/javascript“; tato poznámka byla tedy přidána k registracím „text/ecmascript“, „application/javascript“ a „application/ecmascript“.

Související články