Jetty8でサーバーバージョンを非表示にする方法は次のとおりです。
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);
うまくいくように見えるいくつかのコードを解決した場合。その権利があるかどうかはわかりませんが、少なくとも機能します(:
Server server = new Server(port);
for(Connector y : server.getConnectors()) {
for(ConnectionFactory x : y.getConnectionFactories()) {
if(x instanceof HttpConnectionFactory) {
((HttpConnectionFactory)x).getHttpConfiguration().setSendServerVersion(false);
}
}
}
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 } );
Jetty9をスタンドアロンサーバーとして使用する場合は、ファイルjetty.httpConfig.sendServerVersion=false
でstart.ini
を設定することにより、サーバーの署名を無効にできます。
これで、その設定が設定されたHttpConfigurationオブジェクトができました。
org.Eclipse.jetty.server.HttpConfiguration
オブジェクトのセットアップ方法を示すhttp構成セクションのセクションについてはjetty.xmlを参照し、次にその構成の使用方法を示すjetty-http.xmlファイルを参照してください。 jettyxmlファイルは実際にはJavaの薄いスキンであり、基本的に同じように機能することを忘れないでください。
Jacobのソリューションのラムダスタイルの変形(私のために働いた):
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));
一部のセキュリティ分析ソフトウェアは、応答ヘッダーでサーバーバージョンの送信に問題としてフラグを立てます。
OPは組み込みのソリューションを探していましたが、Jettyデプロイメントでserver.iniファイルを使用する場合は、jetty.send.server.version = falseを設定するだけです。
jetty9.2
で、この設定をstart.ini
でfalse
に変更します。
# should jetty send the server version header?
jetty.send.server.version=true