google-chrome - chrome说“Resource interpreted as script but transferred with MIME type text/plain.”怎么办?

  显示原文与译文双语对照的内容

在FF和所有,中,我的javascript工作正常。 但是在 Chrome 中,它给出了以下信息: Resource interpreted as script but transferred with MIME type text/plain.

我检查了所有的脚本标记,它们都有 MIME type="text/javascript" 。 它甚至用jquery和 jQuery UI 来表示。 Chrome 有什么不好

这个问题有什么问题和解决方法? 是我必须在浏览器的'选项'中更改,还是来自服务器,或者我必须调整代码?

时间:

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


Content-Type: text/plain

你需要配置服务器以发送一个JavaScript响应


Content-Type: application/javascript

用jQuery或者任何怪癖code,这个具有什么 client-side脚本要做,他们 这是个 server-side 问题: 于该client-side脚本相关的server(-side application) resource,是不支持发送所需要的HTTP Content-Type 头字段数字键入下框中 如果站点服务器配置不够,配置不当或者server-side应用程序( 例如。 client-side ) 正在生成脚本资源。

用于ECMAScript实现的适当MIME媒体类型包括:

  • text/javascript ( 注册为过时,符合标准的;但仍有效和最佳 支持)
  • text/ecmascript ( 注册为过时,符合标准的;但仍然有效 )
  • application/javascript
  • application/ecmascript

在标准树至此他们不包括 application/x-javascript,如上面列出的MIME媒体类型是registered.的那些 Cf 。RFC 4329,"脚本媒体类型"( 2005 CE ) 和我的测试用例: 支持脚本媒体类型 。

一个解决方案是尽可能地配置服务器,如已经推荐。 对于 Apache,这就像添加指令一样简单


AddType text/javascript. js

( 参见 Apache HTTP服务器文档了解详细信息) 。

但是如果client-side脚本资源是由server-side应用程序( 如 PHP ) 生成的,则必须显式设置 Content-Type 头字段值,因为默认值可能是 text/html:


<?php
 header('Content-Type: text/javascript; charset=UTF-8');
//...
?>

( 和类似的语句必须在任何其他输出之前出现- 参见 PHP手册,否则HTTP消息正文已经被认为已经开始,而无法发送更多的头字段。)

Server-side生成可以很容易地出现在client-side脚本资源中,即使服务器上有普通的. js 文件,如果注释被打包为一个大响应( 为了减少请求的数量,可以更加高效),或者被Server-side应用程序以任何其他方式被应用程序最小化。

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 ) 将一个mime类型添加到你的web.xml file:


. . .
 </servlet-mapping>

 <mime-mapping> 
 <extension>js</extension> 
 <mime-type>application/javascript</mime-type> 
 </mime-mapping>

 <welcome-file-list>
. . .

应用程序/javascript是当前唯一有效的mime-type ;其他类似文本/javascript的应用程序已经被否决

3 ) 你可能需要清除你的浏览器缓存或者点击 CTRL-F5

如果你使用一个php文件生成你的javascript,将它的添加为你的file:的开始


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

我有这个问题,我想办法解决它。

当样式( CSS ) 文件与引用. css 文件的PHP文件不同的编码时发生

例如使用 jQuery.js 在Unix中编码和在包中使用 index.php UTF-8将导致这个问题所以你必须要让他们两个UTF-8或者任何其他编码,只要它相同的。

在你的apache中,只需添加以下行:


AddType application/x-javascript. js

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

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

而不是使用

/js/main.css 在我的script-tag中

我使用了 js/main.css

,确实有区别。 我坐在 wamp/Windows 上,我没有 vhost,只是使用 localhost/<project>

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

当你想到它的时候,它很明显,但如果有人stumbles在上面,我想我会分享这个答案。

我在使用web框架时遇到了这个问题,通过将相关的javascript文件移动到指定的( 由框架) javascript文件夹来修复它。

在脚本中calls,一个共同的区域发生该过程时如果你有单忘记使它的包含 你必须显式设置它,因为它是- 根据 W3 - 必需:

type ( Content-Type ): 这里属性指定元素内容的脚本语言并重写默认脚本语言。 脚本语言被指定为内容类型( e.g,"text/javascript" ) 。 作者必须为此属性提供一个值。 这里属性有磅没有默认值

仍然似乎浏览器有 plain/text的默认值。

例如:


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

你也可以在你的Apache配置中设置该文件扩展名的默认值:


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

...