在FF和所有,我的javascript工作良好。但在Chrome中,它会给出这样的信息:
资源解释为脚本,但传输与MIME类型文本/纯。
我已经检查了所有的脚本标签,他们都有MIME类型=“文本/javascript”。它甚至说jquery和jquery ui。Chrome出了什么问题?
问题是什么,解决方法是什么?它是我必须改变浏览器的“选项”,还是来自服务器,或者我必须调整我的代码?
在FF和所有,我的javascript工作良好。但在Chrome中,它会给出这样的信息:
资源解释为脚本,但传输与MIME类型文本/纯。
我已经检查了所有的脚本标签,他们都有MIME类型=“文本/javascript”。它甚至说jquery和jquery ui。Chrome出了什么问题?
问题是什么,解决方法是什么?它是我必须改变浏览器的“选项”,还是来自服务器,或者我必须调整我的代码?
当前回答
如果你正在使用Spring MVC, 你可以添加下面的mvn标签来排除Spring Dispatch Servlet中的资源文件
<mvc:resources mapping="/js/*.js" location="/js/"/>
<mvc:resources mapping="/css/*.css" location="/css/"/>
<mvc:resources mapping="/images/*.*" location="/images/"/>
其他回答
如果它的IIS确保在你的公共HTTP功能下,你已经打开了静态内容
我在使用web框架时遇到了这个问题,并通过将相关的javascript文件移动到指定的(由框架)javascript文件夹中来修复它。
如果您正在使用Joomla!并且在尝试包含(.js) JavaScript文件时得到这个恼人的错误,那么下面的解决方案适合你。
最可能的问题是您试图包含一个不存在的.js文件,或者您只是放错了那个.js文件,而当Joomla!如果没有找到资源,那么它将返回一个完整的404消息,其中包含完整的网页和HTML等。
web浏览器将它解释为.js,而它只是一个网页,说所需的文件没有找到。
这可以为joomla2.5joomla3.0joomla3.1joomla3.2joomla3.3joomla工作
这与jQuery或任何客户端脚本代码无关。这是一个服务器端问题:服务器(端应用程序)没有为客户端脚本资源发送预期的HTTP Content-Type报头字段值。如果Web服务器配置不充分、配置错误,或者服务器端应用程序(例如,PHP)正在生成客户端脚本资源,就会发生这种情况。
适合ECMAScript实现(如JavaScript)的MIME媒体类型包括:
文本/javascript(注册为过时,未弃用;但仍然有效,支持最好) Text /ecmascript(注册为过时,未弃用;但仍然有效) 应用程序/ javascript 应用程序/ ecmascript
它们不包括application/x-javascript,因为上面列出的MIME媒体类型现在已经在标准树中注册了(所以没有必要,也不应该再使用实验性的媒体类型)。参考RFC 4329,“脚本媒体类型”(2005 CE)和我的测试用例:对脚本媒体类型的支持。
一种解决方案是尽可能配置服务器,正如已经推荐的那样。对于Apache,这就像添加指令一样简单
AddType text/javascript .js
(详见Apache HTTP Server文档)。
但是如果客户端脚本资源是由服务器端应用程序生成的,比如PHP,那么就有必要显式地设置Content-Type报头字段值,因为默认值可能是text/html:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
(该语句和类似的语句必须在任何其他输出之前出现-请参阅PHP手册-,否则HTTP消息体被认为已经开始,并且发送更多的报头字段为时已晚。)
客户端脚本资源很容易在服务器端生成,即使服务器上有普通的.js文件,如果在提供注释时从它们中删除注释,如果它们都被打包到一个大响应中(以减少请求的数量,这可能更有效),或者服务器端应用程序以任何其他方式最小化它们。
在我的例子中,服务器发送了正确的内容类型,但内容编码不正确。确保只对gzip压缩的资源设置Content-Encoding: gzip。此外,在我修复了服务器中的头文件(在我的例子中,是谷歌云存储)后,我不得不等待几分钟以正确反映由于缓存造成的更改。