2013-03-27 14 views
15

Eğer Jetty'e 8'de sunucu sürümünü gizlemek nasıl budur HTTP Sunucusu başlığını kaldır? Yani şimdi böyle bir şey mi görünmeli?Jetty'e 9

HttpConfiguration config = new HttpConfiguration(); 
config.setSendServerVersion(false); 
//TODO: Associate config with server??? 
Server server = new Server(port); 
+0

yılında false Bu yapılandırma değiştirmek değil İdeal, ama şimdilik bunu önlemek için özel bir senaryo var. – Jacob

+1

Sunucu sürümü _Sending neden ideal_ değil? Yani hiçbir müşterinin onu kullanması gerekmiyor ve güvenlik sonuçları olabilir. Benim düşünceme göre, varsayılan olarak devre dışı bırakılmalı mıyım yoksa bir şey mi özlüyorum? –

+0

Sunucu üstbilgisi kesinlikle kullanılır, arama sıralamanızı etkileyebilir ve teknoloji kararları vermek için belirli türlerde insanlar tarafından sıklıkla kullanılan teknoloji/tarayıcı popülerlik grafikleri oluşturmak için kullanılır. – Jacob

cevap

22

Eğer iş gibi görünüyor bazı kodlar çalıştı. Emin değilim onun sağ, ama en azından eğer çalışırsa (:

HttpConfiguration httpConfig = new HttpConfiguration(); 
httpConfig.setSendServerVersion(false); 
HttpConnectionFactory httpFactory = new HttpConnectionFactory(httpConfig); 
ServerConnector httpConnector = new ServerConnector(server,httpFactory); 
server.setConnectors(new Connector[] { httpConnector }); 
2

Artık bu ayarın üzerinde bir HttpConfiguration nesnesi var.

org.eclipse.jetty.server.HttpConfiguration

nasıl bu yapılandırma gösteren nasıl kurulum nesnesini ve sonra dalgakıran-http.xml dosyaya gösteren http yapılandırma bölümündeki bölüm için jetty.xml için Bakma kullanıldı. Jetty xml dosyalarının java üzerinde gerçekten ince bir cilt olduğunu ve temelde aynı şekilde çalıştığını unutmayın.

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

+2

Bunu gördüm, ama sorun bir jetty xml dosyası kullanmıyorum, Jetty gömülü başlatıyorum. – Jacob

+0

aynı şey, sadece ilgili java çağrıları içine çevirmek –

+2

javadoc gözden geçirdim ve googled ...'HttpConfiguration' sınıfının, onu nasıl kullanacağına dair bir belge yoktur. – Jacob

23

, sen HttpConfiguration üzerinde yapılandırmanız gerekir bir sorun olarak yanıt başlığını.

OP gömülü için çözüm arıyordu, ama İskelesi dağıtım Server.ini dosyası kullanıyorsa, sadece = jetty.send.server.version false ayarlayabilirsiniz

+6

Sence O xml ... biz gömülü örnekler projeye örnek eklemek zorunda kalacak yok tam olarak nasıl java çalışır java kendisi üzerinde xml ince bir smeer sonra başka bir şey değildir son adımı ekleyin: 'server.setConnectors (new Connector [] {httpConnector});'. –

+2

Yeni bağlayıcının bağlantı noktası için önemli bit şudur: 'httpConnector.setPort (bağlantı noktası);'. Varsayılan bağlaç değiştirildiğinden, sunucuya iletilen bağlantı noktası kullanılmamaktadır. – Ben

1

Bazı güvenlik analiz yazılımı bayrak sunucu sürümünü gönderme olacaktır:

Jetty'e 9
Server server = new Server(port); 
for(Connector y : server.getConnectors()) { 
    for(ConnectionFactory x : y.getConnectionFactories()) { 
     if(x instanceof HttpConnectionFactory) { 
      ((HttpConnectionFactory)x).getHttpConfiguration().setSendServerVersion(false); 
     } 
    } 
} 
5

Eğer jetty9'u bağımsız bir sunucu olarak kullanıyorsanız, start.ini dosyasına jetty.httpConfig.sendServerVersion=false ayarlayarak sunucu imzasını devre dışı bırakabilirsiniz.

1

(benim için çalıştı) Yakup'un çözümün Lambda tarzı varyantı: jetty9.2 yılında

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)); 
0

, ben sunucu sürümünü gönderme devre dışı bırakma biliyor start.ini

# should jetty send the server version header? 
jetty.send.server.version=true