Spring RestController 方法 returns 状态 403

Spring RestController method returns status 403

我有一个带有这样代码的 RestController:

@RestController
@RequestMapping("/")
@CrossOrigin
public class UserController {
    @PostMapping("registration")
    @ResponseStatus(HttpStatus.OK)
    public void registration(@RequestBody @Valid RegistrationRequest registrationRequest,
                             BindingResult result) {

        //business logic
    }
}

我希望得到没有正文和状态代码的响应 200.What 我得到的是状态 403 - 禁止访问。

P.S。当我将此方法更改为 return some not null Object 时,我得到状态 200(没有 @ResponseStatus)。

P.P.S。 CSRF 已禁用

有什么想法吗?

提前致谢。

试试下面的方法:

  • 从您的控制器中删除 @RequestMapping("/") class
  • registration 方法上的注释修改为 @PostMapping("/registration")
  • 确保在您的安全配置 class(您用 @EnableWebSecurity 注释的配置)中用 http.csrf().disable().authorizeRequests().antMatchers(POST, "/registration").permitAll() 覆盖 configure(HttpSecurity http) 方法。确保您没有在此处禁用 CORS,因为您已经在控制器上添加了 @CrossOrigin

问题出在 auth 过滤器中(设置状态 403 被硬编码...)。