Почему spring boot security не дает загрузить css стили?

Spring Boot Security по умолчанию включает механизм защиты от CSRF (межсайтовой подделки запроса). Это означает, что все POST, PUT, DELETE запросы должны содержать CSRF-токен, чтобы быть допустимыми. Однако, этот механизм также применяется к запросам на статические ресурсы, такие как файлы CSS.

Когда вы пытаетесь загрузить CSS файл, Spring Security требует наличия CSRF-токена в запросе, чтобы пройти проверку безопасности. Если CSRF-токена нет, то запрос считается недопустимым, и Spring Security возвращает ошибку 403 (запрещено). Это может привести к тому, что ваш стиль не будет загружен.

Есть несколько способов решения этой проблемы:

1. Отключить CSRF-защиту для статических ресурсов: В файле конфигурации SecurityConfig.java, который обычно является классом конфигурации Spring Security, вы можете отключить CSRF-защиту для статических ресурсов, указав .ignoring().antMatchers("/css/**"). Пример кода ниже:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeRequests()
                .antMatchers("/css/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .and()
            .logout();
    }
}

2. Включить CSRF-токен в запросы на статические ресурсы: Вы можете включить CSRF-токен в запросы на статические ресурсы, чтобы они проходили проверку безопасности. Для этого вам нужно будет добавить CSRF-токен в ваш запрос на CSS файл. Например, вы можете использовать Thymeleaf для добавления CSRF-токена в ваш шаблон HTML:

<link th:href="@{/css/style.css}" th:each="${_csrf.parameterName}"> 
        th:value="${_csrf.token}"> 
</link>

3. Переместить статические ресурсы вне директории, которую Spring Boot использует для настройки MVC. По умолчанию, Spring Boot ищет статические ресурсы в директории "resources/static". Перемещение стилей в другую директорию, например "resources/css", может помочь избежать проблем с CSRF-защитой.

Важно отметить, что второй и третий подходы сохраняют механизм CSRF-защиты для статических ресурсов, что способствует безопасности вашего приложения. Однако, они требуют некоторых дополнительных изменений в коде и конфигурации приложения. Вы должны выбрать подход, который лучше всего соответствует ваши потребности в безопасности и удобстве использования.