升级到 Spring 4.3.0,静态 JS 文件现在作为 'application/octet-stream' 而不是 Spring 4.2.6 中的 'application/javascript

Posted

技术标签:

【中文标题】升级到 Spring 4.3.0,静态 JS 文件现在作为 \'application/octet-stream\' 而不是 Spring 4.2.6 中的 \'application/javascript\'【英文标题】:Upgraded to Spring 4.3.0 and static JS files are now served as 'application/octet-stream' instead of 'application/javascript' as in Spring 4.2.6升级到 Spring 4.3.0,静态 JS 文件现在作为 'application/octet-stream' 而不是 Spring 4.2.6 中的 'application/javascript' 【发布时间】:2016-10-15 19:15:54 【问题描述】:

我最近从 Spring 4.2.6 升级到 4.3.0,现在当我的网页尝试加载 静态 javascript 文件时,我在 Chrome 中收到以下错误。

拒绝执行来自http://.../someJsFile.js 的脚本,因为它的 MIME 类型('application/octet-stream')不可执行,并且启用了严格的 MIME 类型检查。

我仔细检查了响应标头(使用 Spring 4.3.0),我确实看到了 Content-Type:application/octet-stream。但是,当我回到 Spring 4.2.6 时,我看到了 Content-Type:application/javascript

文件包含在我的页面中,例如

<!DOCTYPE html>
<html lang="en">
<!-- ... -->
<body>
  <!-- ... -->
  <!-- Adding type="text/javascript" does not help -->
  <script src="/resources/js/someJsFile.js"></script>
</body>
</html>

我的 applicationContext.xml 有以下配置

<!-- ... -->
<context:component-scan base-package="some.package.spec" /> 
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:annotation-driven />
<!-- ... -->

我尝试查看 Spring 4.3.0 发行说明,但没有立即引起注意。

您知道 4.3.0 中的哪些变化对我有影响吗?如何告诉 Spring 4.3.0 为静态 javascript 文件设置正确的内容类型?如果您需要有关配置等的更多详细信息,请告诉我。

【问题讨论】:

对我来说同样的问题,+1 同样的问题,对我来说不同的内容类型。 Javascript 文件被正确提供,但 SVG 文件以内容类型“application/octet-stream”提供。 +1 创建了一个bug report。 【参考方案1】:

此错误已添加到里程碑 4.3.1(请参阅 bug report)并在 4.3.3 版本中标记为已完全解决。

Js 模块 (mjs) 仍由 springframework web 作为 application/octet-stream 提供。为了将它们用作应用程序/javascript,需要在 servlet 描述符 (web.xml) 中映射 mime 类型:

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

【讨论】:

我仍然在 4.3.2 上看到资源目录中有 SVG 文件的类似问题。 @Tor 这个问题在 4.3.1 中对我来说消失了。您应该对现有的错误报告发表评论或提交一份新报告。

以上是关于升级到 Spring 4.3.0,静态 JS 文件现在作为 'application/octet-stream' 而不是 Spring 4.2.6 中的 'application/javascript的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC - 包含静态文件/javascript、css

spring boot 部署war 到tomcat上面静态资源无法访问

Spring Tool Suite:对静态资源的更改触发重新部署

spring MVC js和加载不出图片和js等静态文件的问题。

Spring Boot:静态内容正确提供 CSS 但不提供 JS

Spring MVC程序中怎么得到静态资源文件css,js,图片文件的路径问题