这是在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);
答案 0 :(得分:30)
在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 } );
答案 1 :(得分:23)
如果找出一些似乎有效的代码。不确定它是否正确,但至少它是否有效(:
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 :(得分:8)
如果您将jetty9用作独立服务器,则可以通过在jetty.httpConfig.sendServerVersion=false
文件中设置start.ini
来禁用服务器签名。
答案 3 :(得分:2)
现在有一个HttpConfiguration对象,上面有该设置。
org.eclipse.jetty.server.HttpConfiguration
查看jetty.xml中有关http配置部分的部分,其中显示了如何设置对象,然后查看jetty-http.xml文件,该文件显示了如何使用该配置。请记住,jetty xml文件实际上只是一个比java更薄的皮肤,并且工作基本相同。
答案 4 :(得分:1)
某些安全分析软件会将响应标头中的服务器版本标记为问题。
OP正在寻找嵌入式解决方案,但如果您的Jetty部署使用server.ini文件,则只需设置jetty.send.server.version = false
答案 5 :(得分:1)
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));
答案 6 :(得分:0)
jetty9.2
中,将此配置更改为false
start.ini
# should jetty send the server version header?
jetty.send.server.version=true