如果我使用@GetMapping
和@RequestBody
一切正常,但是如果我仅将@GetMapping
更改为@PostMapping
,我会在邮递员中收到此错误:
"status": 403,
"error": "Forbidden",
"message": "Forbidden",
@GetMapping(value = "/insert") //works
public Long insert(@RequestBody T entity){
...
}
}
@PostMapping(value = "/insert") //does not work
public Long insert(@RequestBody T entity){
...
}
}
最佳答案
@GetMapping和@PostMapping是Spring MVC注释,但是403-是与安全性相关的HTTP代码。因此,问题肯定出在Spring Security配置中。
很有可能该问题的目的是在Spring Security中默认启用的CSRF保护。
要尝试一下,请通过以下方式在配置中禁用CSRF保护:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
}
之后,应在应用程序内允许POST请求。