我的环境中的某个位置有一个 html 文件,我需要限制所有用户访问该文件。所以我只是想添加一个过滤器并限制 html 页面或将其重定向到另一个页面。这是我正在使用的代码,
<filter>
<filter-name>PageCheckFilter</filter-name>
<filter-class>com.src.filter.PageCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PageCheckFilter</filter-name>
<url-pattern>/app?asset=test&path=/xyz-0.1.2/page.html</url-pattern>
</filter-mapping>
我尝试了很多 URL 模式来匹配这个 URL,但都是徒劳。请向我提出一些建议,以便我可以限制此页面的访问。
最佳答案
您不能在过滤器映射中包含查询参数!根据servlet specification ,用于映射的 URL 路径是请求 URL 减去上下文路径和参数(请参阅第 12.1 章 - 使用或 URL 路径)。因此,在将查询字符串映射到您的模式之前,会从 URL 中删除查询字符串。
即使映射中可以包含查询字符串,它也只有在查询参数未重新排序时才有效(例如 /app?path=/xyz-0.1.2/page.html&asset=test
)。
相反,您应该将过滤器映射到对 /app
的所有请求,并自行分析过滤器内的查询参数!
关于java - 如何匹配 web.xml 中的 URL 模式,如/abc?path=xyz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824118/