在FF和所有,我的javascript工作良好。但在Chrome中,它会给出这样的信息:

资源解释为脚本,但传输与MIME类型文本/纯。

我已经检查了所有的脚本标签,他们都有MIME类型=“文本/javascript”。它甚至说jquery和jquery ui。Chrome出了什么问题?

问题是什么,解决方法是什么?它是我必须改变浏览器的“选项”,还是来自服务器,或者我必须调整我的代码?


当前回答

对于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)在web.xml文件中添加javascript的mime类型:

    ...
        </servlet-mapping>

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

        <welcome-file-list>
    ...

这也将适用于其他Java容器- Tomcat等应用程序/javascript是目前唯一有效的mime类型;其他如text/javascript已弃用。

3)您可能需要清除浏览器缓存或按CTRL-F5

其他回答

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

Content-Type: text/plain

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

Content-Type: application/javascript

对于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)在web.xml文件中添加javascript的mime类型:

    ...
        </servlet-mapping>

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

        <welcome-file-list>
    ...

这也将适用于其他Java容器- Tomcat等应用程序/javascript是目前唯一有效的mime类型;其他如text/javascript已弃用。

3)您可能需要清除浏览器缓存或按CTRL-F5

我有同样的错误,最后(在我的特殊情况下),我发现部署描述符(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>

解决方案:

<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>

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

而不是使用 /js/main.css在我的脚本标签我使用js/main.css

是的,它确实起到了作用。我坐在WAMP / Windows上,我没有vhost,但只是使用localhost/<项目>

如果我引用/js/main.css,那么我引用localhost/css/main.css,而不是localhost/<项目>/css/main.css

当你想到它的时候,这是很明显的,但如果有人偶然发现了这个问题,我想我会分享这个答案。

如果你正在使用AdonisJS (REST API,例如),一种避免这种情况的方法是这样定义响应头:

response.safeHeader('Content-type', 'application/json')