代码之家  ›  专栏  ›  技术社区  ›  firegloves

无主体的弹簧映射后返回401

  •  0
  • firegloves  · 技术社区  · 6 年前

    我想做一个 Post 将一些数据写入数据库,但所有需要的信息都存储在服务器上,因此

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

    如果我尝试对此服务发出post请求,即使我传递了有效令牌,我也会收到401。如果我把公开的服务改成 GetMapping 一切正常。看来我没办法应付一个 岗位 以空正文请求。

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

    但没有成功。

    你知道吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   SadmirD    6 年前

    您所解释的问题最常见的原因是错误(或丢失?)配置。

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

    如果你不知道在哪里找,官方文件应该给你一个好的开始: Spring docs - enabling CORS

    更新:

    简短的故事-CORS/CSRF令牌的后端配置在此特定情况下设置正确, 出现此问题的原因是webapp的角度/前端部分缺少标头(CSRF令牌)。