这些标题之间有什么区别?
Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript
哪一个是最好的,为什么?
请不要说它们是相同的——如果它们相同,就不会有三个。我知道两者都有效-但我想知道区别。
nosniff
指令时,这是浏览器应允许 script
标记的 type
属性的值列表。 developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
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 内容类型,要么足够现代以识别 application/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
根据 RFC 4329,JavaScript 的正确 MIME 类型应为 application/javascript
。但是,较旧的 IE 版本对此感到窒息,因为他们期望 text/javascript
。
type
属性所说的内容(在 HTML 5 草案中,JavaScript 可能会省略该属性)。
使用 type="application/javascript"
在 HTML5 的情况下,type 属性已过时,您可以将其删除。注意:根据 w3.org,它默认为“text/javascript”,所以我建议添加“application/javascript”而不是删除它。
http://www.w3.org/TR/html5/scripting-1.html#attr-script-type type 属性给出了脚本的语言或数据的格式。如果该属性存在,则其值必须是有效的 MIME 类型。不得指定 charset 参数。如果该属性不存在,则使用默认值是“text/javascript”。
使用“application/javascript”,因为“text/javascript”已过时:
RFC 4329:http://www.rfc-editor.org/rfc/rfc4329.txt 已部署的脚本媒体类型和兼容性 各种未注册的媒体类型以一种特殊的方式用于标记和交换用 ECMAScript 和 JavaScript 编写的程序。其中包括:+--------------------------------------------- --------+ |文本/javascript |文本/ecmascript | |文本/javascript1.0 |文本/javascript1.1 | |文本/javascript1.2 |文本/javascript1.3 | |文本/javascript1.4 |文本/javascript1.5 | |文本/脚本 |文本/现场脚本 | |文本/x-javascript |文本/x-ecmascript | |应用程序/x-javascript |应用程序/x-ecmascript | |应用程序/javascript |应用程序/ecmascript | +-------------------------------------------------- ----+ 已知对此类内容使用“文本”顶级类型是有问题的。因此,本文档定义了 text/javascript 和 text/ecmascript,但将它们标记为“已过时”。不鼓励使用上面部分列出的实验性和未注册的媒体类型。媒体类型 * application/javascript * application/ecmascript 也在本文档中定义,旨在供普遍使用,应改为使用。本文档定义了 text/javascript、text/ecmascript 和 application/javascript 类型的等效处理要求。与本文档中定义的其他媒体类型相比,媒体类型 application/ecmascript 的使用和支持要少得多。利用它的优势,本文档为这种类型定义了更严格的处理规则,以促进更多的互操作处理。
x-javascript 是实验性的,不要使用它。
<script>
元素上的type
attribute。您不能省略Content-Type
HTTP 标头……(如果您没有在 PHP 中指定它,那么 PHP 将默认为text/html
,这是非常错误的)。text/javascript
已过时而application/x-javascript
是实验性的)。更糟糕的是,它使答案的开头变得不连贯,一个块说text/javascript
只是在答案的顶部不相关地闲逛,没有明显的原因。@echo off
for /r . %%X in (*.js) do (
svn propset svn:mime-type text/javascript "%%X"
)
执行时,会将存储库中所有 JS 文件的 mime 类型更改为文本/javascript。然后,您必须使用新的 mime 类型将 JS 文件提交到 SVN。