您好我正在使用rest服务来开发java Web应用程序。我正在使用apache tomcat服务器。现在,当我向我的应用程序发送请求并获得结果时。然后在响应头中可以看到以下内容:
Status: 200 Ok
Content-Type: application/json
Date: (Whatever date is)
Server: Test
Transfer-Encoding: chunked.
首先,我尝试从上面的信息中删除Server标记。我搜索了那个,最后达到了这一点,我无法删除它。但我可以更改服务器名称,所以我这样做。 (将服务器名称重命名为Test)。
现在我希望状态不应该显示在响应标头中。我搜索了那个但是找不到任何办法。我可以阻止显示此状态吗?
问候
答案 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