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

Obm*_*nen 233 javascript content-type http-headers

这些标题有什么区别?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript
Run Code Online (Sandbox Code Playgroud)

哪一个最好,为什么?

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

Que*_*tin 311

text/javascript是过时的,并且application/x-javascriptx-过渡期的实验(因此是前缀),直到application/javascript可以标准化.

你应该用application/javascript.这在RFC中有记录.

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

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

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

  • 您可以在`<script>`元素上省略`type`**属性**.您不能省略`Content-Type` HTTP标头...永远(如果您没有在PHP中指定它,那么PHP将默认为`text/html`,这是非常错误的). (8认同)
  • 遵循人类可读的逻辑,不应该将CSS归类为应用程序而不是文本? (2认同)
  • @frnhr你对这个答案的编辑改变了预期的意思(这就是说'text/javascript`已经过时了,`application/x-javascript`是实验性的).更糟糕的是,它使答案的开头语无伦次,一个块说"text/javascript"只是在答案的顶部无关紧要地挂出,没有明显的原因. (2认同)

Kin*_*nch 21

开头的哑剧类型x-不规范.在javascript的情况下,它有点过时了.附加第二个代码段

<?Header('Content-Type: text/javascript');?>
Run Code Online (Sandbox Code Playgroud)

需要short_open_tags启用.你应该避免它.

<?php Header('Content-Type: text/javascript');?>
Run Code Online (Sandbox Code Playgroud)

但是,javascript 的完全正确的mime类型是

application/javascript
Run Code Online (Sandbox Code Playgroud)

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


Bjö*_*örn 8

根据RFC 4329,JavaScript的正确MIME类型应该是application/javascript.Howerver,较旧的IE版本因此而扼杀了这一点text/javascript.

  • 据我所知,IE并没有给出猴子的内容类型所说的内容; 只有HTML`type`属性所说的内容(以及HTML 5草稿中的JavaScript属性可能省略). (7认同)

小智 8

自 2022 年 5 月起,text/javascript再次成为首选类型(请参阅RFC 9239

这里的媒体类型注册分为两大类:(1) 唯一的媒体类型“text/javascript”,目前常用;(2) 所有已过时的媒体类型

所有注册都将指向此文档作为参考。过时的注释指出“text/javascript”媒体类型已“已被淘汰,转而采用 application/javascript”,该注释已被删除。过时的注释指出“text/ecmascript”媒体类型已“已被淘汰,转而采用 application/ecmascript”,该注释已被删除。IANA 已在除“text/javascript”之外的所有注册中添加注释“已废弃,支持 text/javascript”;也就是说,此注释已添加到“text/ecmascript”、“application/javascript”和“application/ecmascript”注册中。