Anu*_*onj 5 java tomcat servlets filter jakarta-ee
根据某些安全要求,必须将 X-Powered-By 标头设置为空字符串。我一直在尝试在过滤器中设置标头,但是当我查看 Firebug 中的标头时,我看到由我的过滤器设置的自定义标头值由 JSF/1.2 附加。
过滤器是请求链中的第一个,隐式地是响应链中的最后一个。下面是我在 doFilter 方法中编写的示例代码。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
// App specific logic...
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("X-Powered-By","");
chain.doFilter(request, response);
}
Run Code Online (Sandbox Code Playgroud)
正在使用 Tomcat 6。由于我的过滤器是响应链中的最后一个过滤器,在控制返回到 tomcat 连接器后,tomcat 是否再次设置此标头?
如何将此值覆盖为我的自定义值?
您正在应用程序的其余部分有时间处理响应之前设置响应标头。doFilter您应该在通话后设置它
HttpServletResponse httpResponse = (HttpServletResponse) response;
// before filters and servlets
chain.doFilter(request, response);
// after filters and servlets
httpResponse.setHeader("X-Powered-By","");
Run Code Online (Sandbox Code Playgroud)
另外,请确保在设置 header 之前未提交响应。您可能必须更改其他 servlet 正在执行的操作或将HttpServletResponse.
如果标头是由 Jasper JSP 引擎添加的,您可以检查它是否是这样配置的。您的 Jasper servlet$CATALINA_BASE/conf/web.xml可能已init-param xpoweredBy设置为true.
| 归档时间: |
|
| 查看次数: |
4881 次 |
| 最近记录: |