HTTP-huvuden - Skillnaden mellan content-typerna application/x-javascript och text/javascript
Vad är skillnaden mellan dessa rubriker?
Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript
Vilken är bäst och varför?
Snälla säg inte att de är identiska - om de vore identiska skulle det inte ha funnits tre av dem. Jag vet att båda fungerar - men jag skulle vilja veta skillnaden.
Svar #1
JavaScript MIME-typ
När du skickar JavaScript-innehåll bör du använda text/javascript enligt 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 och text/livescript är föråldrade alias för det. Om du skriver ett verktyg som använder JavaScript (t.ex. en HTTP-klient) bör du överväga att stödja dem för bakåtkompatibilitet.
Historia
MIME-typen text/javascript användes av konvention tills RFC 4329 försökte ersätta den med application/javascript.
Detta var bara en ändring så att text/* och application/* MIME-typgrupper hade en konsekvent betydelse där det var möjligt. (text/* MIME-typer är avsedda för mänskligt läsbart innehåll, JavaScript är inte utformat för att direkt förmedla betydelse till människor).
Branschen ignorerade till stor del specifikationen, så den nuvarande specifikationen övergav försöket.
X-prefix
Vissa av de MIME-typer som nämns här använder ett x--prefix. Detta användes för att indikera experimentella MIME-typer som inte hade standardiserats. Enligt RFC 6648 är denna konvention föråldrad.
HTML
Även om denna fråga handlar om HTTP, är det värt att nämna den relaterade type-attributet i HTML.
När du laddar ett traditionellt skript rekommenderar jag att du helt utelämnar type-attributet. Det har ingen effekt men ger möjlighet att göra ett stavfel som får webbläsaren att behandla det som pekande på en okänd skripttyp och ignorera det. Om du ändå anger det, använd text/javascript eftersom vissa gamla MIME-typer inte kommer att kännas igen.
När du laddar ett JavaScript-modul, använd type="module" (observera att detta värde inte är en MIME-typ!).
Svar #2
mime-typer som börjar med x- är inte standardiserade. När det gäller javascript är det på sätt och vis föråldrat. Dessutom den andra kodsnutten
<?Header('Content-Type: text/javascript');?>
kräver att short_open_tags är aktiverat. du bör undvika det.
<?php Header('Content-Type: text/javascript');?>
Men den fullständigt korrekta MIME-typen för JavaScript är
application/javascript
http://www.iana.org/assignments/media-types/application/index.html
Svar #3
Från och med maj 2022 är text/javascript återigen den föredragna typen (se RFC 9239)
Medietypsregistreringarna häri är indelade i två huvudkategorier: (1) den enda medietypen "text/javascript", som nu är i vanlig användning och (2) alla medietyper som är föråldrade
Och
Alla registreringar kommer att peka på detta dokument som referens. Den föråldrade noteringen som angav att mediatypen "text/javascript" har blivit "OBSOLETED till förmån för application/javascript" har tagits bort. Den föråldrade noteringen som angav att mediatypen "text/ecmascript" har blivit "OBSOLETED till förmån för application/ecmascript" har tagits bort. IANA har lagt till noteringen "OBSOLETED till förmån för text/javascript" till alla registreringar utom "text/javascript"; det vill säga denna notering har lagts till registreringarna "text/ecmascript", "application/javascript" och "application/ecmascript".
