我似乎有一个问题,这似乎很容易,但我找不到解决方案,虽然类似的线程被打开听到。 好吧,我想拒绝访问包含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/*/*/*
但仍然没有运气。 它要么限制对整个网站的访问,要么根本不做任何事情。
有什么建议吗?
谢谢!
答案 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模式中。