javascript and text/javascript content types
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 two of them. I know both work - but I would like to know the difference.
 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 .  
 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
 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 .  
