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“.
