На вашем сервере включена CSRF . Аннотация @EnableWebSecurity
активирует CSRF по умолчанию, как указано в документации .
Защита CSRF включена по умолчанию в конфигурации Java.
Существует два способа это исправить: отключить CSRF или отправить CSRF-токен при выполнении действий PATCH
, POST
, PUT
и DELETE
.
Чтобы отключить CSRF, сделайте это в конфигурации Spring Security
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
}
Чтобы отправить CSRF-токен, вы должны включить его в запрос к серверу (в этом примере JSP с отправкой POST
запроса)
<c:url var="logoutUrl" value="/logout"/>
<form action="${logoutUrl}" method="post">
<input type="submit" value="Log out" />
<input type="hidden" name="${_csrf.parameterName}"
value="${_csrf.token}"/>
</form>
Все примеры взяты из документации Spring Подделка межсайтовых запросов (CSRF)
Пожалуйста, примите во внимание рекомендацию Spring при рассмотрении вопроса об отключении CSRF
.
[...] использовать защиту CSRF для любого запроса, который может быть обработан
браузер обычными пользователями. Если вы только создаете сервис, который
используемые клиентами без браузера, вы, вероятно, захотите отключить CSRF
защита.