如何在Tomcat 7中覆盖HttpStatu
s。
我正在使用HttpServletResponse.sendError(401, "Invalid username or Password")
,但当我在客户端查看响应状态时,它会发现401 Unauthorized
。
有没有办法覆盖它?
答案 0 :(得分:4)
否 - 响应代码根据RFC 2616设置。如果要将消息传达给用户(到API客户端),请将其写入正文或响应标题
答案 1 :(得分:4)
修改catalina.properties
并添加属性:
org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER=true
在我的开发环境中使用该设置,然后当我这样做时:
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
"A very very very bad request");
我明白了:
HTTP/1.1 400 A very very very bad request
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1024
Date: Fri, 20 Dec 2013 11:09:54 GMT
Connection: close
答案 2 :(得分:4)
Tomcat不再支持 USE_CUSTOM_STATUS_MSG_IN_HEADER
属性。
来自8.5.0的更改日志:
RFC 7230规定客户端应忽略HTTP / 1.1中的原因短语 回复消息。由于原因短语是可选的,Tomcat没有 更长时间发送它。因此系统属性 org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER不再使用 并已被删除。 (Markt的)
RFC 7230,超文本传输协议(HTTP / 1.1):消息语法和路由,2014年6月。Section 3.1.2:
原因 - 短语元素仅用于提供 与数字状态代码关联的文本描述, 主要是出于对早期Internet应用程序协议的尊重 更常用于交互式文本客户端。 :一种 客户端应该忽略原因 - 短语内容。