从tomcat中的响应头隐藏状态代码

时间:2014-09-02 18:47:56

标签: java apache rest tomcat

您好我正在使用rest服务来开发java Web应用程序。我正在使用apache tomcat服务器。现在,当我向我的应用程序发送请求并获得结果时。然后在响应头中可以看到以下内容:

Status: 200 Ok
Content-Type: application/json
Date: (Whatever date is)
Server: Test
Transfer-Encoding: chunked.

首先,我尝试从上面的信息中删除Server标记。我搜索了那个,最后达到了这一点,我无法删除它。但我可以更改服务器名称,所以我这样做。 (将服务器名称重命名为Test)。

现在我希望状态不应该显示在响应标头中。我搜索了那个但是找不到任何办法。我可以阻止显示此状态吗?

问候

1 个答案:

答案 0 :(得分:2)

您无法删除“状态标头”,因为它是HTTP的一部分。

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
Header: Value 
etc....

状态直接在响应中。删除状态是没有意义的。 RFC声明正确的响应包含状态代码。

  

6回复

     

接收并解释请求消息后,服务器   使用HTTP响应消息进行响应。

   Response      = Status-Line               ; Section 6.1
                   *(( general-header        ; Section 4.5
                    | response-header        ; Section 6.2
                    | entity-header ) CRLF)  ; Section 7.1
                   CRLF
                   [ message-body ]          ; Section 7.2

状态行是:

  

6.1状态行

     

响应消息的第一行是Status-Line,包含   协议版本后跟一个数字状态代码及其
  相关的文本短语,每个元素由SP
分隔   字符。除最终的CRLF序列外,不允许使用CR或LF。

   Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

根据我对RFC的理解,如果你不发送Status-Code,你就不会尊重HTTP RFC,因此不会“说”HTTP这就是http浏览器所说的。

https://www.ietf.org/rfc/rfc2616.txt

如果您想向http客户端发送奇怪的响应,您可能需要执行一个自定义套接字程序,该程序将侦听端口80并发送您想要的任何响应。

这是一个帮助您在python中构建套接字服务器的资源:https://docs.python.org/2/library/socketserver.html