【问题标题】:Tomcat Remote Address filter doesn't workTomcat 远程地址过滤器不起作用
【发布时间】:2013-10-02 12:21:39
【问题描述】:

我似乎有一个看起来很容易的问题,但我找不到解决方案,尽管打开了类似的线程。 好吧,我想拒绝访问包含 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/*/*/*

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

有什么建议吗?

谢谢!!

【问题讨论】:

    标签: apache tomcat web.xml restrict


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。我也尝试了扩展模式 *.pdf 但仍然没有发生任何事情..
    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多