Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时使用JavaScript MIME类型application/JavaScript而不是text/JavaScript?_Javascript_Mime Types - Fatal编程技术网

何时使用JavaScript MIME类型application/JavaScript而不是text/JavaScript?

何时使用JavaScript MIME类型application/JavaScript而不是text/JavaScript?,javascript,mime-types,Javascript,Mime Types,基于这个问题,HTML文档中使用了text/javascript,以便Internet Explorer能够理解它 但我想知道,您什么时候会使用application/javascript,更重要的是,为什么要使用它而不是text/javascript?应用程序,因为.js-文件不是用户想要阅读的东西,而是应该执行的东西。javascript MIME类型的问题是多年来没有标准。现在我们有了application/javascript作为正式的MIME类型 但实际上,MIME类型根本不重要,因为

基于这个问题,HTML文档中使用了
text/javascript
,以便Internet Explorer能够理解它


但我想知道,您什么时候会使用
application/javascript
,更重要的是,为什么要使用它而不是
text/javascript

应用程序
,因为
.js
-文件不是用户想要阅读的东西,而是应该执行的东西。

javascript MIME类型的问题是多年来没有标准。现在我们有了application/javascript作为正式的MIME类型


但实际上,MIME类型根本不重要,因为浏览器可以自行确定类型。这就是HTML5规范声明不再需要
type=“text/javascript”
的原因。

应用程序/javascript是正确的使用类型,但由于IE6-8不支持它,您将不得不使用text/javascript。如果你不关心有效性(HTML5除外),那么就不要指定类型。

理论上,根据,
application/javascript

它应该是
应用程序
的原因与类型是可读的还是可执行的无关。这是因为存在由语言/类型本身设置的自定义字符集确定机制,而不仅仅是泛型
charset
参数。
text
的子类型应该能够被代理转码到另一个字符集,从而更改字符集参数。JavaScript不是这样,因为:

a。RFC说用户代理应该对脚本进行BOM嗅探以确定类型(我不确定是否有浏览器真的这样做)

b。浏览器使用其他信息,包括页面编码,在某些浏览器中使用
脚本字符集
属性来确定字符集。因此,任何试图对资源进行转码的代理都会破坏其用户。(当然,在现实中,从来没有人使用过转码代理,但这就是目的。)

因此,必须准确地保留文件的确切字节,这使其成为二进制
应用程序
类型,而不是技术上基于字符的
文本

出于同样的原因,
application/xml
正式优于
text/xml
:xml有自己的带内字符集信令机制。而且每个人也会忽略XML的
应用程序


text/javascript
text/xml
可能不是官方的正确选择,但出于兼容性的原因,现在每个人都在使用它们,事实上,它们不正确的原因完全不重要。

可能重复/解释:另请参阅可能重复的可能重复的可能重复的可能重复的官方答案,但IE对此感到窒息。@Benn:可能是因为IE用户必须阅读所有的JS文件,因为他们执行不正确?至少,微软是诚实的;)我喜欢你的评论,但不幸的是,不会读javascript的人仍然使用IE,所以我们必须处理它:(.我不认为你是否想读它与原因有关。它与数据如何被转码有关,或者更确切地说,它是否可以被执行有关。从技术上讲,HTML和CSS也被“执行”(解析)通过浏览器将代码的结果作为视觉内容产生,并不意味着用户“阅读”它,所以这个答案没有多大意义。我想对于什么是“文本”和什么是“应用”有很大的混淆。如果我可以在这个问题上投票,我会说IETF应该考虑“文本”。内容为
文本
二进制
应用程序
,或所述类型的“目的”为“图像”或“文档”等。最“兼容”的解决方案是根本不在响应中包含任何内容类型。RFC声明,如果没有明确的内容类型,接收者将“根据上下文”解释它对于所有浏览器来说,从第一个浏览器开始,这始终是正确的行为。请小心
应用程序/javascript
和IE在兼容模式下运行,IE=8。似乎内联脚本没有得到正确的评估。
文本/javascript
在那里工作得很好。@Pacerier-我知道这条评论有5年历史了d、 但如今,出于安全原因,通常最好包含mime类型,尤其是对于论坛类型的网站。让接收者解释该类型会让人受到攻击,方法是将恶意javascript文件上传为图像,然后让浏览器解释并运行该脚本。最好让服务器返回所有mime类型响应并使用标题
X-Content-Type-Options:nosniff
来阻止浏览器解释类型。@sammy_winter我到处都能看到类似的警告,每次都会畏缩。如果我允许用户上传内容,我可能会比“哦,是的,png文件的名称匹配正则表达式,我可以相信”,不是吗?如果不正确的标题成为“安全问题”,问题可能更深层,你不认为吗?这与隐藏
服务器:nginx
或nginx发送的任何东西是一样的。似乎任何能够找到漏洞的人都需要明确的头来知道你运行的服务器……WHATWG HTML标准似乎不同意IETF关于应该使用哪种MIME类型。但它并不支持实际上是因为你从哪里得到的?我很确定它是受支持的。或者,至少,它会被忽略。@Zenexer read。似乎IE兼容性意味着没有
application/javascript
@CamiloMartin我在IE中一直使用到6。它们只是默认为javascript。@Zenexer-Hm,奇怪。我想知道专业是什么另一个问答中的问题@Zenexer我已经有一段时间没有处理这个问题了,但我使用IE6-8。我不完全确定为什么这似乎只在某些时候起作用,但是