Spring Boot 将 js 文件返回为 MIME 'application/json' 而不是 'text/javascript'

Posted

技术标签:

【中文标题】Spring Boot 将 js 文件返回为 MIME \'application/json\' 而不是 \'text/javascript\'【英文标题】:Spring Boot returns js files as MIME 'application/json' instead of 'text/javascript'Spring Boot 将 js 文件返回为 MIME 'application/json' 而不是 'text/javascript' 【发布时间】:2021-11-08 22:43:41 【问题描述】:

我在 Spring Boot 中使用 Thymeleaf。在加载项目站点的页面时,它说我的脚本被阻止了,因为它是以 json 而不是 text/javascript 的形式返回的。

我使用标准 Thymeleaf 模板将脚本包含在 html 中,如下所示:

  <script type="text/javascript" th:src="@/js/admin-register-users.js" defer></script>

我已通过以下方式设置资源处理:


@Configuration
public class WebConfig implements WebMvcConfigurer 
 
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
        registry.addResourceHandler("/img/**").addResourceLocations("classpath:/static/img/");
        registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
        registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");

        WebMvcConfigurer.super.addResourceHandlers(registry);
    

由于某种原因在浏览器中出现错误:

The resource from “https://localhost:8090/js/admin-register-users.js” was blocked due to MIME type (“application/json”) mismatch (X-Content-Type-Options: nosniff).

【问题讨论】:

【参考方案1】:

原来是找不到文件,所以服务器返回了一个json响应,但是那个响应被阻塞了,无法读取。

长话短说,与资源配置无关。文件不是从 TypeScript 生成的。所以服务器只找到了一个空的js文件夹。

【讨论】:

以上是关于Spring Boot 将 js 文件返回为 MIME 'application/json' 而不是 'text/javascript'的主要内容,如果未能解决你的问题,请参考以下文章

Spring-Boot 不适用于 Flyway

Spring boot @ExceptionHandler 将响应返回为 html

Spring Boot 和 FreeMarker

spring boot 返回字符串而不是 .html 文件

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

SpringBoot第八章 Spring Boot 打包