【问题标题】:Hide Status Code from response header in tomcat在tomcat的响应头中隐藏状态码
【发布时间】:2014-10-27 02:57:22
【问题描述】:

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

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

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

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

问候

【问题讨论】:

  • 我敢问你为什么要删除有效和有用的标题?

标签: java apache rest tomcat


【解决方案1】:

您不能删除“状态标头”,因为它是 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 状态行

响应消息的第一行是状态行,包括 协议版本,后跟数字状态代码及其
相关的文本短语,每个元素由 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2015-11-11
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多