24

这是在 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);
4

7 回答 7

37

在 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 } );
于 2014-04-23T13:06:53.557 回答
30

如果制定了一些似乎有效的代码。不确定它是否正确,但至少它有效(:

Server server = new Server(port);
for(Connector y : server.getConnectors()) {
    for(ConnectionFactory x  : y.getConnectionFactories()) {
        if(x instanceof HttpConnectionFactory) {
            ((HttpConnectionFactory)x).getHttpConfiguration().setSendServerVersion(false);
        }
    }
}
于 2013-03-28T05:48:31.860 回答
11

如果您使用 jetty9 作为独立服务器,您可以通过jetty.httpConfig.sendServerVersion=false在文件中设置来禁用服务器签名start.ini

于 2015-12-05T12:40:34.577 回答
3

Jacob 解决方案的 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));
于 2017-01-26T00:07:50.957 回答
2

现在有一个带有该设置的 HttpConfiguration 对象。

org.eclipse.jetty.server.HttpConfiguration

查看 jetty.xml 中有关 http 配置部分的部分,该部分显示如何设置对象,然后查看 jetty-http.xml 文件,该文件显示如何使用该配置。请记住,jetty xml 文件实际上只是 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

于 2013-03-27T12:34:40.470 回答
1

一些安全分析软件会将在响应标头中发送服务器版本标记为问题。

OP 正在寻找嵌入式解决方案,但如果您的 Jetty 部署使用 server.ini 文件,您可以简单地设置 jetty.send.server.version=false

于 2015-11-05T01:56:16.403 回答
0

in jetty9.2,将此配置更改为falseinstart.ini

# should jetty send the server version header?
jetty.send.server.version=true
于 2017-11-03T07:24:35.870 回答