【问题标题】:Restrict Servlet access based on request origin with Jetty 6使用 Jetty 6 根据请求来源限制 Servlet 访问
【发布时间】:2012-03-25 14:26:02
【问题描述】:

我有一个以编程方式配置的 Jetty 6 服务器(无 XML),它有几个 Servlet。 我想限制其中一个 Servlet 对来自“localhost”的请求的访问。

我可以使用现有的 Jetty 过滤器吗?

如果不是,我如何创建自己的过滤器来做到这一点?

当前代码:

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

【问题讨论】:

    标签: java servlets jetty servlet-filters


    【解决方案1】:

    如果您想按照您指示的方式进行操作,那么您可能需要编写自己的过滤器并查看request.getRemoteAddr()

    但是,在同一个 JVM 中运行两个 Server 实例并让其中一个只监听 localhost 可能更容易。 This documentation 展示了如何使用 XML 配置来做到这一点,很容易将其转换为直接 Java 配置。

    这需要在两个不同的端口上运行 Jetty,但这对您来说可能没问题吗?或者,如果您使用的是 Linux(或其他类 unix 操作系统上的等效系统),则可以使用 iptables 规则来隐藏它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2020-07-20
      • 1970-01-01
      • 2016-03-30
      相关资源
      最近更新 更多