2016-07-19 50 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"); 
     } 
    };