不能将@RequestBody与PostMapping一起使用,仅与GetMapping一起使用

时间:2020-04-11 16:39:46

标签: java spring

如果我使用@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){
          ...
       }
    }

1 个答案:

答案 0 :(得分:2)

@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请求。