Java 使用Jetty 6基于请求来源限制Servlet访问
我有一个Jetty6服务器,它是以编程方式配置的(没有XML),它有几个servlet。 我想将其中一个Servlet的访问限制为来自“localhost”的请求 是否有一个预先存在的码头过滤器可供我使用 如果否,我如何创建自己的筛选器来执行此操作 当前代码:Java 使用Jetty 6基于请求来源限制Servlet访问,java,servlets,jetty,servlet-filters,Java,Servlets,Jetty,Servlet Filters,我有一个Jetty6服务器,它是以编程方式配置的(没有XML),它有几个servlet。 我想将其中一个Servlet的访问限制为来自“localhost”的请求 是否有一个预先存在的码头过滤器可供我使用 如果否,我如何创建自己的筛选器来执行此操作 当前代码: Server server = new Server(httpPort); Context ctx = new Context(server, "/"); ctx.addServlet(new ServletHolder(someHttp
Server server = new Server(httpPort);
Context ctx = new Context(server, "/");
ctx.addServlet(new ServletHolder(someHttpServlet), "/servlet1/*");
ctx.addServlet(new ServletHolder(someOtherHttpServlet), "/servlet2/*");
ctx.addFilter(new FilterHolder(myFilterHere), "/servlet2/*", Context.ALL);
如果您想按照您指定的方式执行,那么您可能需要编写自己的筛选器,并查看
request.getRemoteAddr()
但是,在同一JVM中运行两个服务器
实例并让其中一个只监听本地主机
可能更容易。演示了如何使用XML配置实现这一点,将其转换为直接Java配置非常容易
这需要在两个不同的端口上运行Jetty,但这可能适合您?或者,如果您使用的是Linux(或其他类似unix的操作系统上的等效系统),则可以通过使用iptables规则来隐藏这一点