我之前看到了这个问题的一些答案,但我尝试过的解决方案都没有.
我的login.css没有应用于我的Spring Boot应用程序中的login.html.我也在使用Thymeleaf.
安全性已打开 – 但我不认为这是浏览器中的问题.我没有看到加载login.css失败 – 只有消息:
Resource interpreted as Stylesheet but transferred with MIME type 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都没有问题.浏览器也返回带有302状态代码的login.css.
谢谢
解决方法
在使用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 Dev Tools,为我的本地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",new Product()); return "product/edit"; }
奇怪的是,像这样的小错误影响了整个程序.
希望它对某个面临同样问题的人有用.