Удалите заголовок HTTP-сервера в Jetty 9

Вот как вы скрываете версию сервера в Jetty 8:

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

Как вы это делаете в Jetty 9? Итак, теперь он должен выглядеть примерно так?

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

Ответы

Ответ 1

Если выработали какой-то код, который, похоже, работает. Не уверен, что его право, но по крайней мере оно работает (:

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

Ответ 2

В Jetty 9 вам нужно настроить его на HttpConfiguration:

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

Ответ 3

Если вы используете jetty9 в качестве автономного сервера, вы можете отключить подпись сервера, установив jetty.httpConfig.sendServerVersion=false в файл start.ini.

Ответ 4

Теперь есть объект HttpConfiguration с этим параметром.

org.eclipse.jetty.server.HttpConfiguration

Посмотрите на файл jetty.xml для раздела в разделе конфигурации http, в котором показано, как настроить объект, а затем файл jetty-http.xml, который показывает, как эта конфигурация используется. Помните, что файлы xml jetty на самом деле просто тонкая кожа поверх java и работают в основном одинаково.

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

Ответ 5

Некоторое программное обеспечение для анализа безопасности отметит отправку версии сервера в заголовок ответа как проблему.

OP искал решение для встроенных, но если в вашем развертывании Jetty используется файл server.ini, вы можете просто установить jetty.send.server.version = false

Ответ 6

Lambda-образный вариант решения Якоба (который работал у меня):

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

Ответ 7

в jetty9.2, измените эту конфигурацию на false в start.ini

# should jetty send the server version header?
jetty.send.server.version=true