Servlet 过滤器不适用于容器管理的登录页面
Servlet filter not applying to container managed login page
我正在使用 Filter
在我的所有页面中插入 anti-clickjacking headers - 这工作正常,除了 JBoss EAP 6.3 容器管理的登录页面,这是拥有它的更重要的页面之一。
过滤器根本不会在登录页面中调用,它由 http://localhost/Application/
提供。我试过的过滤器映射包括
<filter>
<filter-name>InsertXFrameOptions</filter-name>
<filter-class>com.filter.InsertXFrameOptionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InsertXFrameOptions</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>InsertXFrameOptions</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>InsertXFrameOptions</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
虽然运气不佳 - 如何映射过滤器以使其适用于容器管理的登录页面?
过滤器不会启动 j_security_check
请求。在命中 Web 应用程序的过滤器之前,它们由容器在内部处理。因此,您需要使用特定于容器的解决方案来挂钩 request/response.
JBoss 6.x/7.x(以及所有其他基于 Tomcat 的容器)提供 Valves for this. Basically, replace your Filter
by a Valve
which looks like below:
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
public class InsertXFrameOptionsValve extends ValveBase {
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {
response.addHeader("X-Frame-Options", "SAMEORIGIN");
getNext().invoke(request, response);
}
}
为了达到 运行,register 它在 jboss-web.xml
中,如下所示:
<valve>
<class-name>com.example.InsertXFrameOptionsValve</class-name>
</valve>
我正在使用 Filter
在我的所有页面中插入 anti-clickjacking headers - 这工作正常,除了 JBoss EAP 6.3 容器管理的登录页面,这是拥有它的更重要的页面之一。
过滤器根本不会在登录页面中调用,它由 http://localhost/Application/
提供。我试过的过滤器映射包括
<filter>
<filter-name>InsertXFrameOptions</filter-name>
<filter-class>com.filter.InsertXFrameOptionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InsertXFrameOptions</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>InsertXFrameOptions</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>InsertXFrameOptions</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
虽然运气不佳 - 如何映射过滤器以使其适用于容器管理的登录页面?
过滤器不会启动 j_security_check
请求。在命中 Web 应用程序的过滤器之前,它们由容器在内部处理。因此,您需要使用特定于容器的解决方案来挂钩 request/response.
JBoss 6.x/7.x(以及所有其他基于 Tomcat 的容器)提供 Valves for this. Basically, replace your Filter
by a Valve
which looks like below:
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
public class InsertXFrameOptionsValve extends ValveBase {
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {
response.addHeader("X-Frame-Options", "SAMEORIGIN");
getNext().invoke(request, response);
}
}
为了达到 运行,register 它在 jboss-web.xml
中,如下所示:
<valve>
<class-name>com.example.InsertXFrameOptionsValve</class-name>
</valve>