有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想在我的控制器响应中返回相同的请求头,但如果我这样做,那么在尝试使用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",

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


共 (1) 个答案

  1. # 1 楼答案

    邮递员在默认情况下发送标题内容长度,并且它是为请求计算的。因为您的代码只是获取请求的Content-Length头并返回它,所以它将与响应的实际长度不匹配
    删除Postman中的请求头内容长度将解决您的响应是不完整的JSON结构的问题

    在“邮递员”中,为请求打开“邮件头”选项卡,并确保未隐藏自动生成的邮件头。然后可以取消选中内容长度标题