如何在Tomcat 7中覆盖HttpStatu
的文本。覆盖HTTP响应状态文本
我使用的是HttpServletResponse.sendError(401, "Invalid username or Password")
,但是当我在客户端查看响应状态时,它欢迎401 Unauthorized
。
有什么方法可以覆盖它吗?
如何在Tomcat 7中覆盖HttpStatu
的文本。覆盖HTTP响应状态文本
我使用的是HttpServletResponse.sendError(401, "Invalid username or Password")
,但是当我在客户端查看响应状态时,它欢迎401 Unauthorized
。
有什么方法可以覆盖它吗?
编辑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
否 - 响应代码是根据RFC 2616如果要的消息传达给用户(在API客户端)或者它在体内或在响应报头
确实,响应代码在RFC中指定,但“Reason Phrase”(这是问题的关键)可以是任何你喜欢的。 (参见[rfc2616第6.1.1节](http://tools.ietf.org/html/rfc2616#section-6.1.1)“这里列出的短语只是建议 - 它们可能会被当地的等同物替代,而没有影响协议。“ –
的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:
原因短语元件存在的唯一目的提供 与数字状态代码 相关的文本描述大多不考虑早期的互联网应用协议 ,这些协议更常用于交互式文本客户端。 A 客户端应该忽略原因短语内容。
可能重复[“如何显示用户友好的错误页面...”](http://stackoverflow.com/questions/2748220/how-to-show-user-friendly-error-page-代替-的-Tomcat的对数与堆叠-痕量在-b)。 – dcsohl
@dcsohl不重复。这个问题是关于HTTP头。另一个是关于自定义错误页面。 – Javier