Remove the HTTP Server header in Jetty 9

23,157

Solution 1

If worked out some code that seems to work. Not sure if its right, but at least it works (:

Server server = new Server(port);
for(Connector y : server.getConnectors()) {
    for(ConnectionFactory x  : y.getConnectionFactories()) {
        if(x instanceof HttpConnectionFactory) {
            ((HttpConnectionFactory)x).getHttpConfiguration().setSendServerVersion(false);
        }
    }
}

Solution 2

In Jetty 9, you need to configure it on HttpConfiguration:

HttpConfiguration httpConfig = new HttpConfiguration();
httpConfig.setSendServerVersion( false );
HttpConnectionFactory httpFactory = new HttpConnectionFactory( httpConfig );
ServerConnector httpConnector = new ServerConnector( server,httpFactory );
server.setConnectors( new Connector[] { httpConnector } );

Solution 3

If you use jetty9 as a standalone server you can disable the server signature by setting jetty.httpConfig.sendServerVersion=false in the file start.ini.

Solution 4

Lambda-style variant of Jacob's solution (which worked for me):

final Server server = new Server(port);
Stream.of(server.getConnectors()).flatMap(connector -> connector.getConnectionFactories().stream())
            .filter(connFactory -> connFactory instanceof HttpConnectionFactory)
            .forEach(httpConnFactory -> ((HttpConnectionFactory)httpConnFactory).getHttpConfiguration().setSendServerVersion(false));

Solution 5

There is now an HttpConfiguration object with that setting on it.

org.eclipse.jetty.server.HttpConfiguration

Look to the jetty.xml for the section on http configuration section showing how to setup the object and then the jetty-http.xml file which shows how that configuration is used. Remember that the jetty xml files are really just a thin skin over java and work basically the same.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-server/src/main/config/etc/jetty.xml

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-server/src/main/config/etc/jetty-http.xml

Share:
23,157
Jay
Author by

Jay

Experienced Java developer. Keen go (golang) developer.

Updated on July 25, 2022

Comments

  • Jay
    Jay almost 2 years

    This is how you hide the server version in Jetty 8:

    Server server = new Server(port);
    server.setSendServerVersion(false);
    

    How do you do it in Jetty 9? So now it should look something like this?

    HttpConfiguration config = new HttpConfiguration();
    config.setSendServerVersion(false);
    //TODO: Associate config with server???
    Server server = new Server(port);