春季PostMapping返回401,没有正文

时间:2018-10-10 08:55:57

标签: spring spring-mvc spring-boot spring-restcontroller spring-rest

我想创建一个Post来将一些数据写入数据库,但是所有需要的信息都存储在服务器上,因此我的Post服务不需要任何正文:

@PostMapping("foo")
public @ResponseBody 
RestResponse writeFoo() {
    // WRITE AND RETURN
}

如果我尝试对此服务进行发布请求,即使我传递了有效的令牌,也会收到401。如果我将公开的服务更改为GetMapping,则所有工作都将按预期进行。看来我无法处理空的Post请求。

我尝试添加一些假参数作为

RestResponse writeFoo(@RequestBody(required = false) String fake)

但没有成功。

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

您解释的问题通常是导致配置错误(或丢失)的原因。

请注意,REST API默认允许使用GET方法,而您需要指定其他方法类型(例如PUT和POST),否则由于CORS而无法使用。

GET方法起作用而POST方法不起作用的部分强烈提示缺少或不正确的CORS配置。您可以通过添加一些CORS过滤器并设置响应标题来快速修复它。

如果您不知道在哪里寻找,官方文档应该为您提供一个良好的开端:Spring docs - enabling CORS

更新:

问题已成功解决,请查看评论部分以获取更多信息。 简短的故事-在这种情况下,CORS / CSRF令牌的后端配置已正确设置,由于Web应用程序的角度/前端部分缺少标头(CSRF令牌),因此出现了问题。