2016-07-19 49 views
0

我希望我的碼頭服務器只處理從本地主機來的請求。我試圖通過這樣做:如何使用Jetty IPAccessHandler將IPv6地址列入白名單?

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
    context.setContextPath("/webapi"); 
    IPAccessHandler ipBlockingHandler = new IPAccessHandler(); 
    ipBlockingHandler.addWhite("127.0.0.1|/*"); 
    ipBlockingHandler.setHandler(context); 
    final org.eclipse.jetty.server.Server jettyServer = new org.eclipse.jetty.server.Server(8080); 
    jettyServer.setHandler(ipBlockingHandler); 

雖然,這僅適用於IPv4的,如果我加ipBlockingHandler.addWhite("127.0.0.1|/*");這是行不通的。

回答

0

這是通過重寫IPAccessHandler並手動解析adddresses可行:

IPAccessHandler ipBlockingHandler = new IPAccessHandler(){ 
     @Override 
     protected boolean isAddrUriAllowed(String addr, 
           String path){ 
      return addr.equals("127.0.0.1") || addr.equals("0:0:0:0:0:0:0:1"); 
     } 
    };