我想创建一个Post
来将一些数据写入数据库,但是所有需要的信息都存储在服务器上,因此我的Post
服务不需要任何正文:
@PostMapping("foo")
public @ResponseBody
RestResponse writeFoo() {
// WRITE AND RETURN
}
如果我尝试对此服务进行发布请求,即使我传递了有效的令牌,也会收到401。如果我将公开的服务更改为GetMapping
,则所有工作都将按预期进行。看来我无法处理空的Post
请求。
我尝试添加一些假参数作为
RestResponse writeFoo(@RequestBody(required = false) String fake)
但没有成功。
有什么主意吗?
答案 0 :(得分:0)
您解释的问题通常是导致配置错误(或丢失)的原因。
请注意,REST API默认允许使用GET方法,而您需要指定其他方法类型(例如PUT和POST),否则由于CORS而无法使用。
GET方法起作用而POST方法不起作用的部分强烈提示缺少或不正确的CORS配置。您可以通过添加一些CORS过滤器并设置响应标题来快速修复它。
如果您不知道在哪里寻找,官方文档应该为您提供一个良好的开端:Spring docs - enabling CORS
更新:
问题已成功解决,请查看评论部分以获取更多信息。 简短的故事-在这种情况下,CORS / CSRF令牌的后端配置已正确设置,由于Web应用程序的角度/前端部分缺少标头(CSRF令牌),因此出现了问题。