Tomcat远程地址筛选器不起作用

时间:2013-10-02 12:21:39

标签: apache tomcat web.xml restrict

我似乎有一个问题,这似乎很容易,但我找不到解决方案,虽然类似的线程被打开听到。 好吧,我想拒绝访问包含pdf的网址: attica.unipi.gr:8080/xmlui/bitstream/handle/123456789/5/a3iologisi%20genika.pdf?sequence=1

请注意,这不是一个可靠的网址,而是这部分内容 - > /123456789/5/a3iologisi%20genika.pdf?sequence=1,是动态生成的,具体取决于用户点击查看的pdf。

所以,基于此: http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter,我试过这个:

<filter>
  <filter-name>Remote Address Filter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>deny</param-name>
    <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Remote Address Filter</filter-name>
  <url-pattern>/xmlui/bitstream/handle/*/*/*</url-pattern>
</filter-mapping>

但仍然没有工作。我相信这是一个网址模式的问题,所以我尝试将模式更改为

/xmlui/bitstream/handle/*/*/*pdf

/attica.unipi.gr:8080/xmlui/bitstream/handle/*/*/*

但仍然没有运气。 它要么限制对整个网站的访问,要么根本不做任何事情。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要阅读Servlet规范,了解有效URL模式的构成。简短版本是他们需要以外卡结尾(例如<url-pattern>/foo/bar/*</url-pattern>)或以一个(<url-pattern>*.jsp</url-pattern>)开头

如果您要做的只是匹配任何带有pdf扩展的文件,那么<url-pattern>*.pdf</url-pattern>就是您所需要的。执行URL模式匹配时,Tomcat(或任何其他Servlet容器)将忽略查询参数。

另外,协议,主机名,端口和上下文路径都不应出现在URL模式中。