Удалите заголовок 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