So verstecken Sie die Serverversion in Jetty 8:
Server server = new Server(port);
server.setSendServerVersion(false);
Wie machst du das in Jetty 9? Also sollte es jetzt so aussehen?
HttpConfiguration config = new HttpConfiguration();
config.setSendServerVersion(false);
//TODO: Associate config with server???
Server server = new Server(port);
Wenn ein Code ausgearbeitet ist, scheint er zu funktionieren. Nicht sicher, ob es richtig ist, aber es funktioniert zumindest (:
Server server = new Server(port);
for(Connector y : server.getConnectors()) {
for(ConnectionFactory x : y.getConnectionFactories()) {
if(x instanceof HttpConnectionFactory) {
((HttpConnectionFactory)x).getHttpConfiguration().setSendServerVersion(false);
}
}
}
In Jetty 9 müssen Sie es auf HttpConfiguration konfigurieren:
HttpConfiguration httpConfig = new HttpConfiguration();
httpConfig.setSendServerVersion( false );
HttpConnectionFactory httpFactory = new HttpConnectionFactory( httpConfig );
ServerConnector httpConnector = new ServerConnector( server,httpFactory );
server.setConnectors( new Connector[] { httpConnector } );
Wenn Sie jetty9 als eigenständigen Server verwenden, können Sie die Serversignatur deaktivieren, indem Sie jetty.httpConfig.sendServerVersion=false
in der Datei start.ini
festlegen.
Es gibt jetzt ein HttpConfiguration-Objekt mit dieser Einstellung.
org.Eclipse.jetty.server.HttpConfiguration
In der Datei jetty.xml finden Sie den Abschnitt zur http-Konfiguration, in dem das Einrichten des Objekts und anschließend die Datei jetty-http.xml beschrieben werden, in der die Verwendung dieser Konfiguration dargestellt ist. Denken Sie daran, dass die Jetty-XML-Dateien wirklich nur eine dünne Oberfläche über Java sind und im Grunde dasselbe funktionieren.
Lambda-Variante von Jacobs Lösung (die bei mir funktioniert hat):
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));
Einige Sicherheitsanalyseprogramme kennzeichnen das Senden der Serverversion im Antwortheader als Problem.
OP suchte nach einer Lösung für Embedded, aber wenn Ihre Jetty-Bereitstellung die Datei server.ini verwendet, können Sie einfach jetty.send.server.version = false festlegen
ändere diese Konfiguration in jetty9.2
in false
in start.ini
# should jetty send the server version header?
jetty.send.server.version=true