Java 访问URL时按Tomcat 7上的IP地址范围阻止访问
如何在tomcat/application上配置web.xml文件,以实现以下目标: 允许:Java 访问URL时按Tomcat 7上的IP地址范围阻止访问,java,tomcat,Java,Tomcat,如何在tomcat/application上配置web.xml文件,以实现以下目标: 允许: localhost/app/foo/bar/* 不允许: localhost/app/foo 有没有一种不改变源代码的方法?更改web.xml文件是可以的 我读过,但单凭这一点并不能解决问题 我尝试了以下方法: <filter> <filter-name>Remote IP Filter</filter-name> <filter-cla
- localhost/app/foo/bar/*
- localhost/app/foo
<filter>
<filter-name>Remote IP Filter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
<init-param>
<param-name>deny</param-name>
<param-value>^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$</param-value>
</init-param>
<init-param>
<param-name>denyStatus</param-name>
<param-value>403</param-value>
</init-param>
</filter>
<filter>
<filter-name>Allow quickview</filter-name>
<filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
<init-param>
<param-name>allow</param-name>
<param-value>^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$</param-value>
</init-param>
<init-param>
<param-name>denyStatus</param-name>
<param-value>403</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Allow quickview</filter-name>
<url-pattern>/foo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Remote IP Filter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Allow quickview</filter-name>
<url-pattern>/foo/*</url-pattern>
</filter-mapping>
<!-- disallowed, will throw 403 -->
<filter-mapping>
<filter-name>Remote IP Filter</filter-name>
<url-pattern>/foo/index.jsp</url-pattern>
</filter-mapping>
远程IP筛选器
org.apache.catalina.filters.RemoteAddrFilter
否认
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
致密状态
403
允许快速查看
org.apache.catalina.filters.RemoteAddrFilter
允许
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
致密状态
403
允许快速查看
/福/*
远程IP筛选器
/
谢谢 您的
不符合问题中所述的要求。你说你想禁止/app/foo/*
,但允许/app/foo
。你想要这个,那么:
<filter-mapping>
<filter-name>Allow quickview</filter-name>
<url-pattern>/foo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Remote IP Filter</filter-name>
<url-pattern>/foo</url-pattern>
</filter-mapping>
允许快速查看
/福/*
远程IP筛选器
/福
最后,我通过以下方法解决了这个问题:
<filter>
<filter-name>Remote IP Filter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
<init-param>
<param-name>deny</param-name>
<param-value>^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$</param-value>
</init-param>
<init-param>
<param-name>denyStatus</param-name>
<param-value>403</param-value>
</init-param>
</filter>
<filter>
<filter-name>Allow quickview</filter-name>
<filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
<init-param>
<param-name>allow</param-name>
<param-value>^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$</param-value>
</init-param>
<init-param>
<param-name>denyStatus</param-name>
<param-value>403</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Allow quickview</filter-name>
<url-pattern>/foo/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Remote IP Filter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Allow quickview</filter-name>
<url-pattern>/foo/*</url-pattern>
</filter-mapping>
<!-- disallowed, will throw 403 -->
<filter-mapping>
<filter-name>Remote IP Filter</filter-name>
<url-pattern>/foo/index.jsp</url-pattern>
</filter-mapping>
允许快速查看
/福/*
远程IP筛选器
/foo/index.jsp
关键是将index.jsp添加为“/”单独使用不起作用。您所说的“单独使用不会解决问题”是什么意思?您是否使用spring上下文侦听器?请展示您的web.xml。我考虑过以重叠的方式声明2个筛选器映射,但只应用了其中一个。我建议在tomcat服务器前面安装一个apache http服务器。然后你可以有一个简单的规则来拒绝访问。我想nginx或apache可以很容易地完成这项工作,但我在我的商店里做不到