java—将相同的请求头发送到响应头会导致无限循环和错误的json响应spring boot

hc2pp10m  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(300)

我想在我的控制器响应中返回相同的请求头,但是如果我这样做并且在尝试用postman进行测试时出现无限等待
我有这个控制器

@PostMapping("/yy")
public ResponseEntity<ClientOutput> myTest(@RequestHeader HttpHeaders headers,
                                             @RequestBody ClientInput clientInput) {
    return new ResponseEntity<>(new ClientOutput(), headers, HttpStatus.OK);

  }

这会导致无限等待循环,当我尝试用postman测试它时,如何返回与我在响应中的请求相同的头文件,
当我尝试使用这个控制器时,它也会产生一个不完整的响应

@PostMapping("/uu")
  public ResponseEntity<ClientOutput> myTestTwo(@RequestHeader HttpHeaders headers,
                                             @RequestBody ClientInput clientInput) {
    return new ResponseEntity<>(ClientOutput.builder()
            .error(Error.builder()
                    .code("401")
                    .title("Error")
                    .message("A error happened")
                    .build())
            .build(), headers, HttpStatus.UNAUTHORIZED);

  }

它没有返回我的错误dto,而是返回这个不完整的json

{
    "name": null,
    "error": {
        "code": "401",
        "title": "Error",

我只想在响应中返回相同的请求头

wbgh16ku

wbgh16ku1#

Postman 在默认情况下发送头内容长度,并且它是为请求计算的。因为您的代码只是获取请求的content-length头并返回它,所以它将与响应的实际长度不匹配。
删除postman中的请求头内容长度将解决您的响应是不完整的json结构的问题。
在postman中打开请求的headers选项卡,并确保自动生成的headers没有隐藏。然后可以取消选中内容长度标题。

相关问题