【问题标题】:Spring MVC response header: why does setting header on param HttpServletResponse work when I return a new ResponseEntity?Spring MVC 响应标头:为什么在我返回新的 ResponseEntity 时在参数 HttpServletResponse 上设置标头有效?
【发布时间】:2018-12-18 08:55:04
【问题描述】:

我有这个简单的 sn-p:

@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 上设置标题时,它也可以工作:我在测试中看到标题“允许”设置。为什么?

【问题讨论】:

    标签: java spring-mvc servlets httpresponse


    【解决方案1】:

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

    【讨论】:

    • 不,我的意思是两者都可以工作,而不是“不工作”。我创建了一个新的响应并设置了标题,它可以工作;当我在旧的传入响应上设置标题并返回一个新的 ResponseEntity 时,它也可以工作。
    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2017-10-13
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多