Supprimer L'en-tête du serveur HTTP dans Jetty 9
Voici comment vous masquez la version du serveur dans Jetty 8:
Server server = new Server(port);
server.setSendServerVersion(false);
<!-Comment faites-vous à la jetée 9? Alors maintenant ça devrait ressembler à ça?
HttpConfiguration config = new HttpConfiguration();
config.setSendServerVersion(false);
//TODO: Associate config with server???
Server server = new Server(port);
7 réponses
dans Jetty 9, Vous devez le configurer sur HttpConfiguration:
HttpConfiguration httpConfig = new HttpConfiguration();
httpConfig.setSendServerVersion( false );
HttpConnectionFactory httpFactory = new HttpConnectionFactory( httpConfig );
ServerConnector httpConnector = new ServerConnector( server,httpFactory );
server.setConnectors( new Connector[] { httpConnector } );
Si établi un code qui semble fonctionner. Je ne sais pas si c'est juste, mais au moins ça marche (:
Server server = new Server(port);
for(Connector y : server.getConnectors()) {
for(ConnectionFactory x : y.getConnectionFactories()) {
if(x instanceof HttpConnectionFactory) {
((HttpConnectionFactory)x).getHttpConfiguration().setSendServerVersion(false);
}
}
}
si vous utilisez jetty9 comme serveur autonome, vous pouvez désactiver la signature du serveur en définissant jetty.httpConfig.sendServerVersion=false
dans le fichier start.ini
.
il y a maintenant un objet HttpConfiguration avec ce paramètre.
org.Eclipse.jetée.serveur.HttpConfiguration
regardez la jetée.xml pour la section sur la section de configuration http montrant comment configurer l'objet, puis le Jetty-http.fichier xml qui montre comment cette configuration est utilisée. Rappelez - vous que les fichiers Jetty xml sont vraiment juste une peau fine sur java et de travailler essentiellement la de même.
Certains logiciels d'analyse de sécurité signaleront comme problème l'envoi de la version du serveur dans l'en-tête de réponse.
OP recherchait une solution pour embarqué, mais si votre déploiement de Jetty utilise le serveur.fichier ini, vous pouvez simplement définir jetty.envoyer.serveur.version=false
variante Lambda de la solution de Jacob (qui a fonctionné pour moi):
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));
jetty9.2
, changez cette configuration en false
start.ini
# should jetty send the server version header?
jetty.send.server.version=true