这些头文件之间有什么区别?

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

哪个是最好的,为什么?

请不要说他们是一模一样的——如果他们是一模一样的,就不会有三个了。我知道这两种方法都有效,但我想知道其中的区别。


当前回答

根据RFC 4329, JavaScript的正确MIME类型应该是application/ JavaScript。然而,旧的IE版本在这方面受阻,因为他们期望文本/javascript。

其他回答

以x-开头的mime类型不是标准化的。对于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

截至2022年5月,文本/javascript再次成为首选类型(参见RFC 9239)

Text /javascript已经过时了,application/x-javascript只是一个试验性的(因此前缀是x),直到application/javascript被标准化。

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

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

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

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

rfc9239更新ECMAScript媒体类型

正如itaton提到的,文本/javascript再次成为首选类型

这个RFC取代了RFC 4329(“脚本媒体类型”),用与常用用法和实现经验相一致的信息和需求取代了以前的注册。

原因是没有遵循BCP-13,详见https://www.rfc-editor.org/info/bcp13

https://www.rfc-editor.org/rfc/rfc9239.html#section-6

改变背后的原因:

最后,[HTML]规范在准备脚本标签时使用“text/javascript”作为ECMAScript的默认媒体类型;因此,“text/javascript”的预期用法已经从过时转移到通用。rfc9239

你也可以使用这个网站来测试媒体类型:https://mathiasbynens.be/demo/javascript-mime-type

根据RFC 4329, JavaScript的正确MIME类型应该是application/ JavaScript。然而,旧的IE版本在这方面受阻,因为他们期望文本/javascript。