webentwicklung-frage-antwort-db.com.de

Entfernen Sie den HTTP-Server-Header in Jetty 9

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);
17
Jacob

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);
        }
    }
}
23
Jacob

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 } );
29
djschny

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.

8
Tarator

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.

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

2
jesse mcconnell

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

1
EricJ

ändere diese Konfiguration in jetty9.2 in false in start.ini

# should jetty send the server version header?
jetty.send.server.version=true
0
宏杰李