如何使java中的wriiten服务只能处理来自定义ip的请求?

如何使java中的wriiten服务只能处理来自定义ip的请求?,java,http,server,endpoint,Java,Http,Server,Endpoint,我想用java编写由几个端点组成的应用程序。我希望这个端点只处理从定义的ip发送的请求。如何实现它?执行类似操作以获取IP地址,该地址与预定义的IP地址相匹配 @RequestMapping(value = "startup", method = RequestMethod.GET) public @ResponseBody ProcessResponse startUp(@RequestBody RequestTemplate requestTemplate, HttpServletReque

我想用java编写由几个端点组成的应用程序。我希望这个端点只处理从定义的ip发送的请求。如何实现它?

执行类似操作以获取IP地址,该地址与预定义的IP地址相匹配

@RequestMapping(value = "startup", method = RequestMethod.GET)
public @ResponseBody ProcessResponse startUp(@RequestBody RequestTemplate requestTemplate, HttpServletRequest request) {

        System.out.println(request.getRemoteAddr());
        // some other code
}

执行类似操作以获取IP地址,该地址与预定义的IP地址相匹配

@RequestMapping(value = "startup", method = RequestMethod.GET)
public @ResponseBody ProcessResponse startUp(@RequestBody RequestTemplate requestTemplate, HttpServletRequest request) {

        System.out.println(request.getRemoteAddr());
        // some other code
}

Web应用程序

阿帕奇雄猫

在应用程序中编辑WEB-INF/WEB.xml文件。添加以下内容:

<filter>
  <filter-name>Remote Address Filter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value><!-- insert your ip list / regex here --></param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Remote Address Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

远程地址筛选器
org.apache.catalina.filters.RemoteAddrFilter
允许
远程地址筛选器
/*
这指示筛选器阻止除包含的IP地址之外的所有IP地址。筛选器仅支持阻止列出的IP地址。有关过滤器的更多信息,请参见此处

弹簧靴

对于使用嵌入式ApacheTomcat容器(这是默认行为)运行的Spring引导应用程序,请使用上述ApacheTomcat部分中描述的相同过滤器。它是在代码中配置的,而不是在XML中配置的。Spring引导文档解释了如何启用Servlet过滤器。使用文档中的说明启用RemoteAddrFilter


Spring启动文档:

Web应用程序

阿帕奇雄猫

在应用程序中编辑WEB-INF/WEB.xml文件。添加以下内容:

<filter>
  <filter-name>Remote Address Filter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value><!-- insert your ip list / regex here --></param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Remote Address Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

远程地址筛选器
org.apache.catalina.filters.RemoteAddrFilter
允许
远程地址筛选器
/*
这指示筛选器阻止除包含的IP地址之外的所有IP地址。筛选器仅支持阻止列出的IP地址。有关过滤器的更多信息,请参见此处

弹簧靴

对于使用嵌入式ApacheTomcat容器(这是默认行为)运行的Spring引导应用程序,请使用上述ApacheTomcat部分中描述的相同过滤器。它是在代码中配置的,而不是在XML中配置的。Spring引导文档解释了如何启用Servlet过滤器。使用文档中的说明启用RemoteAddrFilter


Spring Boot Document:

理论上,您可以在过滤器()中处理此问题,但实际上,当请求到达您的servlet时,IP地址可能已经更改。您可以给我们一些关于代码的见解吗。如果我们不必从头开始,我们会更容易帮助您。这取决于您使用什么来实现您的Web服务/端点。如果在客户端和您的服务之间有Apache或Nginx这样的Web服务器,您可以在那里定义ip限制(我不会将它们硬编码到应用程序中,因为即使是“静态”ip地址也会不时更改),请您提示我如何在http协议中定义发送方的ip。什么标头或其他响应?理论上,您可以在filter()中处理这个问题,但实际上,当请求到达servlet时,IP地址可能已经改变了。您可以给我们一些关于代码的见解吗。如果我们不必从头开始,我们会更容易帮助您。这取决于您使用什么来实现您的Web服务/端点。如果在客户端和您的服务之间有Apache或Nginx这样的Web服务器,您可以在那里定义ip限制(我不会将它们硬编码到应用程序中,因为即使是“静态”ip地址也会不时更改),请您提示我如何在http协议中定义发送方的ip。它的标题或其他响应是什么?