Spring MVC响应标头:当我返回新的ResponseEntity时,为什么在参数HttpServletResponse上设置标头会起作用?

时间:2018-12-18 08:55:05

标签: java spring-mvc servlets httpresponse

我有这个简单的代码段:

@RequestMapping(value = "/consent-history", method = RequestMethod.OPTIONS)
public ResponseEntity optionsHistory(HttpServletResponse response) {
    //response.setHeader("Allow", "GET,OPTIONS");
    //return new ResponseEntity(HttpStatus.OK); // this works too, strangely
    return ResponseEntity.status(200).header("Allow", "GET,OPTIONS").body(""); // this apparently works
}

我知道返回一个新的ResponseEntity是可行的,因为我在其上设置了标头。但是,当我在参数response上设置标头时,它也起作用:我在测试中看到标头“允许”设置。为什么?

1 个答案:

答案 0 :(得分:0)

因为当您返回ResponseEntity时。您已经创建了一个新的响应,而不是HttpServletResponse。因此,您将标题设置为该响应,但返回另一个响应。这就是您的标头不起作用的原因。