18

我可以将org.apache.coyote.http11.Http11Protocol.SERVER的值重命名为其他任何值,因此 HTTP-Response-Header 包含以下内容:

服务器:阿帕奇

而不是默认的

服务器:Apache-Coyote/1.1

对 org.apache.coyote.http11.Http11Protocol.SERVER 使用空值不会删除 Server-Header。

如何从我的共鸣中删除 Server-Header?

4

5 回答 5

9

您可以修改您的 tomcat server.xml 并添加“服务器”选项并将其设置为您想要的任何内容。应该为您正在运行的任何 http 或 ssl 连接器设置服务器选项。例如,下面是来自示例 server.xml 文件的示例 HTTP 连接器配置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" enableLookups="false" xpoweredby="false" server="Web"/>
于 2015-12-11T13:58:44.627 回答
7

简短的回答 - 您不能删除标题,但您应该修改它(请参阅其他答案)。

服务器标头在 RFC 中定义,它是强制性的。(未在规范中定义为可选)

取自http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.38

14.38 服务器
Server response-header 字段包含有关源服务器用于处理请求的软件的信息。
该字段可以包含多个产品令牌(第 3.8 节)和标识服务器和任何重要子产品的注释。产品令牌按其识别应用程序的重要性顺序列出。

如果响应是通过代理转发的,代理应用程序不能修改服务器响应头。相反,它应该包含一个 Via 字段(如第 14.45 节所述)。

  Note: Revealing the specific software version of the server might
  allow the server machine to become more vulnerable to attacks
  against software that is known to contain security holes. Server
  implementors are encouraged to make this field a configurable
  option.
于 2013-03-23T16:08:32.683 回答
5

从 Tomcat 5.5 开始应该可以。查看此讨论:https ://mail-archives.apache.org/mod_mbox/tomcat-users/200508.mbox/%3C42FBE8AA.1060401@joedog.org%3E 和此链接: https ://tomcat.apache.org /tomcat-4.1-doc/config/coyote.html

因此,以下应将服务器标头设置为TEST. 空应该使其为空。

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8180" inProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="10" debug="0" connectionTimeout="20000" useURIValidationHack="false" server="TEST"/>

在大多数情况下,将 Server 标头设置为 Apache 在安全方面应该足够好。仅凭此,就无法推断出哪个操作系统或哪个确切版本与哪些模块以及正在运行的模块的版本。

于 2014-07-30T09:24:57.250 回答
1

如果您使用的是嵌入式 tomcat,那么您可以尝试以下代码。

import org.apache.catalina.startup.Tomcat;

final Tomcat server = new Tomcat();
server.getConnector().setXpoweredBy(false);
server.getConnector().setAttribute("server", "");
于 2019-04-23T06:53:05.973 回答
0

用于 Web 应用程序。从代码中设置服务器标头。它在 Java Spring boot 项目中对我有用。

response.setHeader("Server", "none");

如果它部署在 tomcat 中,请尝试从代码中添加。

在此处输入图像描述

于 2021-05-21T08:36:24.347 回答