Theoretisch nach RFC 4329 , application/javascript
.
Der Grund, warum es sein soll, application
hat nichts damit zu tun, ob der Typ lesbar oder ausführbar ist. Dies liegt daran, dass es benutzerdefinierte Zeichensatzbestimmungsmechanismen gibt, die von der Sprache / dem Typ selbst festgelegt werden und nicht nur vom generischen charset
Parameter. Ein Subtyp von text
sollte von einem Proxy in einen anderen Zeichensatz transkodiert werden können, wobei der Zeichensatzparameter geändert wird. Dies gilt nicht für JavaScript, weil:
ein. Der RFC sagt, dass Benutzeragenten Stücklisten-Sniffing für das Skript durchführen sollten, um den Typ zu bestimmen (ich bin mir nicht sicher, ob dies tatsächlich von Browsern durchgeführt wird).
b. Browser verwenden andere Informationen - die Codierung der eingeschlossenen Seite und in einigen Browsern das script charset
Attribut -, um den Zeichensatz zu bestimmen. Jeder Proxy, der versucht hat, die Ressource zu transkodieren, würde seine Benutzer beschädigen. (Natürlich verwendet in Wirklichkeit sowieso niemand Transcodierungs-Proxys, aber das war die Absicht.)
Deshalb ist die genaue Bytes der Datei muss erhalten bleiben genau , was es zu einer binären macht application
Art und technisch nicht zeichenbasierte text
.
Aus dem gleichen Grund wird application/xml
es offiziell vorgezogen text/xml
: XML verfügt über eigene In-Band-Zeichensatz-Signalisierungsmechanismen. Und jeder ignoriert auch application
XML.
text/javascript
und text/xml
vielleicht nicht das offizielle Richtige, aber es gibt das, was heute jeder aus Kompatibilitätsgründen verwendet, und die Gründe, warum sie nicht das Richtige sind, sind praktisch völlig unwichtig.