Sha*_*aoz 314 google-chrome mime-types
在FF和所有,我的JavaScript工作正常.但在Chrome中,它会显示以下消息:
资源解释为脚本,但使用MIME类型text/plain进行传输.
我检查了所有的脚本标签,他们都有MIME type="text/javascript"
.它甚至用jquery和jquery ui这样说.Chrome有什么问题?
有什么问题和解决方法?这是我必须在浏览器的"选项"中更改的内容,还是来自服务器,还是我必须调整代码?
SLa*_*aks 203
这意味着服务器正在发送Javascript HTTP响应
Content-Type: text/plain
Run Code Online (Sandbox Code Playgroud)
您需要配置服务器以发送JavaScript响应
Content-Type: application/javascript
Run Code Online (Sandbox Code Playgroud)
Poi*_*ars 125
这与jQuery或任何客户端脚本代码的怪癖无关.这是服务器端问题:服务器(-side应用程序)未发送客户端脚本资源的预期HTTP Content-Type
头字段值.如果Web服务器配置不当,配置错误或服务器端应用程序(例如,PHP)正在生成客户端脚本资源,则会发生这种情况.
适用于ECMAScript实现的适当MIME媒体类型包括:
text/javascript
(注册为已过时,未弃用;但仍然有效,并且支持最佳)text/ecmascript
(已注册为已废弃,未弃用;但仍有效)application/javascript
application/ecmascript
它们不包括application/x-javascript
,因为上面列出的MIME媒体类型是标准树中注册的类型(因此没有必要,并且不应该再使用实验性的那些).参看 RFC 4329,"脚本媒体类型"(2005 CE)和我的测试用例:支持脚本媒体类型.
一种解决方案是尽可能配置服务器,如已推荐的那样.对于Apache,这可以像添加指令一样简单
AddType text/javascript .js
Run Code Online (Sandbox Code Playgroud)
(有关详细信息,请参阅Apache HTTP Server文档).
但是,如果客户端脚本资源是由服务器端应用程序(如PHP)生成的,则必须Content-Type
显式设置头字段值,因为默认值很可能text/html
:
<?php
header('Content-Type: text/javascript; charset=UTF-8');
// ...
?>
Run Code Online (Sandbox Code Playgroud)
(那些和类似的语句必须在任何其他输出之前 - 请参阅PHP手册 - 否则HTTP消息体已被认为已经开始,并且发送更多的头字段为时已晚.)
服务器端生成可以很容易地发生在客户端脚本资源上,即使你在服务器上有简单的.js文件,如果它们被提供时从它们中删除了注释,如果它们都被打包成一个大的响应(以减少请求的数量,可以更高效),或者它们由服务器端应用程序以任何其他方式最小化.
ega*_*rdo 19
对于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>
Run Code Online (Sandbox Code Playgroud)
2)将javascript的mime类型添加到web.xml文件中:
...
</servlet-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>application/javascript</mime-type>
</mime-mapping>
<welcome-file-list>
...
Run Code Online (Sandbox Code Playgroud)
这也适用于其他Java容器 - Tomcat等application/javascript
是目前唯一有效的mime类型; 其他人喜欢text/javascript
被弃用.
3)您可能需要清理浏览器缓存或按CTRL-F5
如果您使用php文件生成javascript,请将其添加为文件的开头:
<?php Header("Content-Type: application/x-javascript; charset=UTF-8"); ?>
Run Code Online (Sandbox Code Playgroud)
小智 7
我有这个问题,我想出了如何解决它.
当样式(CSS)文件与引用.css文件的PHP文件的编码不同时,会发生这种情况
例如,在Unix编码中使用jQuery.js并在UTF-8中使用index.php会导致此问题,因此您必须使它们都是UTF-8或任何其他编码,只要它们相同即可.
归档时间: |
|
查看次数: |
435619 次 |
最近记录: |