一尘不染

Springboot-资源被解释为样式表,但以MIME类型text / htm传输

spring-boot

以前,我看到过许多关于此问题的答案,但我尝试过的所有解决方案都没有。

login.css没有login.html在Spring Boot应用程序中应用到我。我也在用Thymeleaf。

安全性已启用-但我不认为这是浏览器中的问题。我看不到加载失败login.css-仅显示以下消息:

资源被解释为样式表,但以MIME类型text / html传输:

浏览器中的进一步检查显示它正在请求text/css,但得到text/html响应。

的HTML:

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">

<head>

<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatiable" content="IE-Edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="Login"/>


<title>LOGIN</title>

<!-- Latest compiled and minified CSS -->

....
<link rel="stylesheet" href="login.css" content-type="text/css"/>

的路径 login.html

\src\main\resources\templates\login.html

的路径 login.css

\src\main\resources\static\login.css

以防万一这是我提出的权限问题:

.antMatchers("/css/**").permitAll()

我注意到通过CDN交付的所有CSS都没有问题。另外,浏览器返回login.css一个 302个状态码

谢谢


阅读 423

收藏
2020-05-30

共1个答案

一尘不染

使用 Spring Boot + Spring MVC
编写一些代码时,我遇到了完全相同的问题。使用CDN设置的CSS文件运行良好,而我static/css文件夹中的CSS文件设置返回了HTML内容。

例:

<!-- This first worked fine, loading all styles -->
<link th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap.min.css}"
      href="http://cdn.jsdelivr.net/webjars/bootstrap/3.3.7/css/bootstrap.min.css"
      rel="stylesheet" media="screen" />

<!-- This second one returned the content of an HTML - Content Type text/html -->
<link rel="stylesheet" th:href="@{/css/login/style.css}" href="/css/login/style.css" />

一段时间后,我发现使用 Chrome开发工具 可以看到,本地返回的内容style.css与HTML页面之一相同。

检查指向具有该内容的HTML文件的路由,我可以意识到我在@RequestMapping配置中使用了错误的属性。我有@RequestMapping(name="..."),而不是@RequestMapping(path="...")

控制器有问题

@RequestMapping(name = "/product/add", method = RequestMethod.GET)
public String add(Model model) {
    model.addAttribute("product", new Product());
    return "product/edit";
}

控制器已更改

@RequestMapping(path = "/product/add", method = RequestMethod.GET)
public String add(Model model) {
    model.addAttribute("product", new Product());

    return "product/edit";
}

更改属性后namepath所有内容均开始正确加载。

奇怪的是,这样的小错误如何影响了我的整个程序。

希望它对面临同样问题的人有所帮助。

2020-05-30