出现的问题及原因
Spring boot 在 SpringMVC / REST 和Spring Security一起使用时,编写的RestController 或 Controller 中的方法,GET不出错, POST 403,这可能是CSRF保护导致的。
解决方法
可以通过 httpSecurity.csrf().disable()
关闭csrf防护。
但这不是推荐的做法。官方推荐的做法是增加csrf token
SpringMVC中可以在form中增加:
1 | <input type=”hidden” th:name=”${_csrf.parameterName}” th:value=”${_csrf.token}”/> |
RESTful API需要把这2个值作为http header传递给后端。
CSRF
CSRF是网络攻击的一种,此处有详细说明。