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