Difference between application/x-javascript and text/javascript content types

JavascriptHttp HeadersContent Type

Javascript Problem Overview


What is the difference between these headers?

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

Which one is best and why?

Please do not say they are identical - if they were identical there would not have been three of them. I know both work - but I would like to know the difference.

Javascript Solutions


Solution 1 - Javascript

text/javascript is obsolete, and application/x-javascript was experimental (hence the x- prefix) for a transitional period until application/javascript could be standardised.

You should use application/javascript. This is documented in the RFC.

As far a browsers are concerned, there is no difference (at least in HTTP headers). This was just a change so that the text/* and application/* MIME type groups had a consistent meaning where possible. (text/* MIME types are intended for human readable content, JavaScript is not designed to directly convey meaning to humans).

Note that using application/javascript in the type attribute of a script element will cause the script to be ignored (as being in an unknown language) in some older browsers. Either continue to use text/javascript there or omit the attribute entirely (which is permitted in HTML 5).

This isn't a problem in HTTP headers as browsers universally (as far as I'm aware) either ignore the HTTP content-type of scripts entirely, or are modern enough to recognise application/javascript.

Solution 2 - Javascript

mime-types starting with x- are not standardized. In case of javascript it's kind of outdated. Additional the second code snippet

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

requires short_open_tags to be enabled. you should avoid it.

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

However, the completely correct mime-type for javascript is

application/javascript

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

Solution 3 - Javascript

According to RFC 4329 the correct MIME type for JavaScript should be application/javascript. Howerver, older IE versions choke on this since they expect text/javascript.

Solution 4 - Javascript

Use type="application/javascript"

In case of HTML5, the type attribute is obsolete, you may remove it. Note: that it defaults to "text/javascript" according to w3.org, so I would suggest to add the "application/javascript" instead of removing it.

> http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
The type > attribute gives the language of the script or format of the data. If > the attribute is present, its value must be a valid MIME type. The > charset parameter must not be specified. The default, which is used if > the attribute is absent, is "text/javascript".

Use "application/javascript", because "text/javascript" is obsolete:

> RFC 4329: http://www.rfc-editor.org/rfc/rfc4329.txt > > 3. Deployed Scripting Media Types and Compatibility > > Various unregistered media types have been used in an ad-hoc > fashion to label and exchange programs written in ECMAScript and > JavaScript. These include: > > +-----------------------------------------------------+ > | text/javascript | text/ecmascript | > | text/javascript1.0 | text/javascript1.1 | > | text/javascript1.2 | text/javascript1.3 | > | text/javascript1.4 | text/javascript1.5 | > | text/jscript | text/livescript | > | text/x-javascript | text/x-ecmascript | > | application/x-javascript | application/x-ecmascript | > | application/javascript | application/ecmascript | > +-----------------------------------------------------+
> > Use of the "text" top-level type for this kind of content is known to be > problematic. This document thus defines text/javascript and text/
> ecmascript but marks them as "obsolete". Use of experimental and
> unregistered media types, as listed in part above, is discouraged.
> The media types, > > * application/javascript > * application/ecmascript > > which are also defined in this document, are intended for common > use and should be used instead. > > This document defines equivalent processing requirements for the
> types text/javascript, text/ecmascript, and application/javascript.
> Use of and support for the media type application/ecmascript is
> considerably less widespread than for other media types defined in
> this document. Using that to its advantage, this document defines
> stricter processing rules for this type to foster more interoperable
> processing.

x-javascript is experimental, don't use it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionObmerk KronenView Question on Stackoverflow
Solution 1 - JavascriptQuentinView Answer on Stackoverflow
Solution 2 - JavascriptKingCrunchView Answer on Stackoverflow
Solution 3 - JavascriptBjörnView Answer on Stackoverflow
Solution 4 - JavascriptjuFoView Answer on Stackoverflow