You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring 5.3.23静态JS文件MIME类型异常:返回application/octet-stream

解决Spring 5.3.23升级后静态JS文件MIME类型错误问题

问题分析

升级Spring到5.3.23后,带哈希后缀的JS文件(如app.cfd50411dd32f43695e2.bundle.js)被识别为application/octet-stream类型,Chrome的严格MIME检查会拒绝执行这类脚本。这是因为Spring 5.3.x对静态资源的MIME类型解析逻辑做了调整,默认规则无法正确匹配带哈希前缀的JS文件名,导致 fallback 到默认的二进制流类型。

解决方案

1. 手动配置MIME类型映射

通过实现WebMvcConfigurer接口,强制指定JS文件的Content-Type:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    // 方式一:配置内容协商的MIME映射
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.mediaType("js", MediaType.APPLICATION_JAVASCRIPT);
    }

    // 方式二:在资源处理链中指定MIME类型
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .resourceChain(true)
                .addResolver(new PathResourceResolver() {
                    @Override
                    protected MediaType getMediaType(Resource resource) throws IOException {
                        String filename = resource.getFilename();
                        if (filename != null && filename.endsWith(".js")) {
                            return MediaType.APPLICATION_JAVASCRIPT;
                        }
                        return super.getMediaType(resource);
                    }
                });
    }
}

2. 自定义MIME类型配置文件

在项目的src/main/resources下创建mime.types文件,添加:

application/javascript js

然后通过Servlet上下文初始化器加载这个配置:

@Bean
public ServletContextInitializer mimeTypesInitializer() {
    return servletContext -> servletContext.setMimeType("js", "application/javascript");
}

3. 排查拦截器/过滤器干扰

检查项目中是否存在自定义的Filter或Interceptor,确认它们没有修改静态资源响应的Content-Type头,避免覆盖Spring设置的正确MIME类型。

内容的提问来源于stack exchange,提问作者simar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:45:39