application / x-javascript和text / javascript内容类型之间的区别

时间:2012-03-12 09:12:55

标签: javascript http-headers content-type

这些标题之间有什么区别?

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

哪一个最好,为什么?

请不要说它们是相同的 - 如果它们相同则不会有三个相同。我知道两者都有效 - 但我想知道其中的差异。

4 个答案:

答案 0 :(得分:302)

text/javascript已过时,application/x-javascript是实验性的(因此x-前缀)为过渡期,直到application/javascript可以标准化。

您应该使用application/javascript RFC中记录了这一点。

就浏览器而言,没有区别(至少在HTTP标头中)。这只是一个更改,以便text/*application/* MIME类型组在可能的情况下具有一致的含义。 (text/* MIME类型用于人类可读的内容,JavaScript不是为了直接向人类传达意义而设计的。)

请注意,在脚本元素的application/javascript属性中使用type将导致在某些旧版浏览器中忽略脚本(如未知语言)。继续在那里使用text/javascript或完全省略该属性(在HTML 5中允许)。

这在HTTP标头中不是问题,因为普遍使用的浏览器(据我所知)要么完全忽略脚本的HTTP内容类型,要么现代化足以识别application/javascript

答案 1 :(得分:21)

x-开头的mime-types未标准化。在javascript的情况下,它有点过时了。 附加第二个代码段

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

要求short_open_tags启用。你应该避免它。

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

然而,完全正确的javascript mime类型是

application/javascript

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

答案 2 :(得分:8)

根据RFC 4329,JavaScript的正确MIME类型应为application/javascript。但是,旧的IE版本因为期望text/javascript而窒息。

答案 3 :(得分:4)

使用type =&#34; application / javascript&#34;

对于HTML5,type属性已过时,您可以将其删除。注意:它默认为&#34; text / javascript&#34;根据w3.org,所以我建议添加&#34; application / javascript&#34;而不是删除它。

  

runtime.onMessageExternal
  类型   attribute提供脚本的语言或数据的格式。如果   如果属性存在,则其值必须是有效的MIME类型。该   不得指定charset参数。默认值,如果使用,则使用   该属性不存在,是&#34; text / javascript&#34;。

使用&#34; application / javascript&#34;,因为&#34; text / javascript&#34;已过时

  

RFC 4329:http://www.w3.org/TR/html5/scripting-1.html#attr-script-type

     
      
  1. 部署的脚本媒体类型和兼容性

         

    ad-hoc中使用了各种未注册的媒体类型   时尚标签和交换用ECMAScript编写的程序   JavaScript的。其中包括:

         

    + ---------------------------------------------- ------- +     | 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 |     + ------------------------------------------------- ---- +

  2.         

    使用&#34;文本&#34;已知这种内容的顶级类型   有问题的。因此,该文档定义了text / javascript和text /
      ecmascript但标记为&#34;过时&#34;。使用实验和   不鼓励未注册的媒体类型,如上面部分所列   媒体类型,

      * application/javascript
      * application/ecmascript
    
         

    也在本文档中定义,仅供参考   使用,而应该使用。

         

    本文件定义了相应的处理要求   键入text / javascript,text / ecmascript和application / javascript   媒体类型应用/ ecmascript的使用和支持是
      比在其中定义的其他媒体类型广泛得多   这个文件。使用它有利于本文件定义   更严格的处理规则,以促进更多的互操作性   处理

x-javascript是实验性的,不要使用它。