如何返回带有错误响应的Http状态行?

时间:2019-04-03 15:18:48

标签: spring rest spring-boot http httpresponse

我正在开发Spring-Boot应用程序。对于每个响应,我想返回http状态行,标题和正文。按照标准,状态行看起来像:HTTP版本SP状态代码SP原因短语CRLF。 例如:Http / 1.1 400错误的请求

我正在将ResponseEntity与VnDErrors一起使用,但是Status-Line并未按照标准形成。我只能看到“ Http / 1.1 400”。这里的原因短语缺失。

我曾尝试使用带有@ResponseStatus批注的@ResponseBody,但没有运气来达到预期的效果。

这是我正在使用的一段代码:

@ExceptionHandler(HttpRequestMethodNotSupportedException)
    ResponseEntity<VndErrors> httpRequestMethodNotSupportedException(ex) {
        LOGGER.error(ex.message)
        ResponseEntity.status(BAD_REQUEST).contentType(VND_ERROR).body(new 
        VndErrors(BAD_REQUEST, exceptionMessage))
    }

表示状态行的预期响应:“ Http / 1.1 400错误请求” 想知道这是可以实现的吗?如果是,那我该怎么做。

1 个答案:

答案 0 :(得分:1)

这是tomcat的标准行为,请参见tomcat-8.5-changelog.html

spring-boot-issue-6789

  

RFC 7230指出,客户端应忽略HTTP / 1.1响应消息中的原因短语。由于原因短语是可选的,因此Tomcat不再发送它。结果,系统属性org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER不再使用,并且已被删除。 (市场)