删除服务器头tomcat

时间:2012-06-19 13:54:11

标签: http-headers tomcat7

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

服务器:Apache

而不是默认

服务器:Apache-狼/ 1.1

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

如何从我的共鸣中删除服务器标题?

5 个答案:

答案 0 :(得分:6)

您可以修改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"/>

答案 1 :(得分:5)

简短回答 - 您无法删除标题,但您应该对其进行修改(请参阅其他答案)。

服务器标头在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.

答案 2 :(得分: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"/>

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

答案 3 :(得分:0)

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

import org.apache.catalina.startup.Tomcat;

final Tomcat server = new Tomcat();
server.getConnector().setXpoweredBy(false);
server.getConnector().setAttribute("server", "");

答案 4 :(得分:0)

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

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

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

enter image description here