1

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

请记住,这不是一个可靠的 url,但它的这一部分 --> /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>

但仍然不起作用。我相信这是一个 url 模式问题,所以我尝试将模式更改为

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

或者

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

但仍然没有运气。它要么限制对整个站点的访问,要么什么都不做。

有什么建议么?

谢谢 !!

4

1 回答 1

2

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

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

顺便说一句,协议、主机名、端口或上下文路径都不应该出现在 URL 模式中。

于 2013-10-02T16:33:31.273 回答