删除Jetty 9中的HTTP Server标头

时间:2013-03-27 06:14:32

标签: java jetty

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

7 个答案:

答案 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更薄的皮肤,并且工作基本相同。

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

答案 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