应用程序/ x-javascript和text / javascript内容types之间的区别

这些标题有什么区别?

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

哪一个最好,为什么?

请不要说他们是相同的 – 如果他们是相同的,就不会有两个。 我知道这两个工作 – 但我想知道其中的差异。

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

你应该使用application/javascript 这在RFC中有logging 。

就浏览器而言,没有任何区别(至less在HTTP头文件中)。 这只是一个改变,所以text/*application/* MIMEtypes组在可能的情况下具有一致的含义。 ( text/* MIMEtypes是为了人类可读的内容而devise的,JavaScript并不是直接向人类传达意义的)。

请注意,在脚本元素的type属性中使用application/javascript会导致在一些较旧的浏览器中忽略脚本(因为它是未知的语言)。 要么继续使用text/javascript ,要么完全忽略该属性(在HTML 5中允许)。

这在HTTP头中并不是一个普遍的问题(据我所知)要么完全忽略HTTP内容types的脚本,要么足够现代的识别application/javascript

x-开头的MIMEtypes不是标准化的。 在JavaScript的情况下,这是过时的。 额外的第二个代码片段

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

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

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

但是, 完全正确的MIMEtypes的JavaScript是

 application/javascript 

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

根据RFC 4329,JavaScript的正确的MIMEtypes应该是application/javascript 。 因为他们期望text/javascript ,所以较旧的IE版本会窒息。

使用type =“application / javascript”

在HTML5的情况下,type属性已经过时,您可以将其删除。 注意:根据w3.org,它默认为“text / javascript”,所以我build议添加“application / javascript”而不是删除它。

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
type属性给出脚本的语言或数据的格式。 如果该属性存在,则其值必须是有效的MIMEtypes。 charset参数不能被指定。 如果该属性不存在,则使用默认值“text / javascript”。

使用“application / javascript”,因为“text / javascript”已经过时

RFC 4329: http ://www.rfc-editor.org/rfc/rfc4329.txt

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

    已经使用各种未注册的媒体types来标记和交换用ECMAScript和JavaScript编写的程序。 这些包括:

    + ————————————————- —- + | text / javascript | 文本/ 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 | | 应用程序/ x-javascript | application / x-ecmascript | | 应用程序/ JavaScript | 应用程序/ ecmascript | + ————————————————- —- +

已知这种types的内容使用“文本”顶级types是有问题的。 这个文件因此定义文本/ JavaScript和文本/
ecmascript,但标记为“过时”。 使用实验和
未注册的媒体types,如上面部分列出,是不鼓励的。
媒体types,

  * application/javascript * application/ecmascript 

在本文档中也有定义,它们是用于通用的,应该用来代替。

本文件定义了等效的处理要求
键入文本/ JavaScript,文本/ ecmascript,和应用程序/ JavaScript。
使用和支持媒体types的应用程序/ ecmascript是
大大低于其他媒体types的定义
这个文件。 利用这个优势,这个文件定义
更严格的处理规则,以促进更多的互操作性
处理。

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