升级到 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等静态文件的问题。