根据一些安全要求,必须将X-Powered-By头设置为空字符串。我一直试图在过滤器中设置头,但当我在Firebug中查看头时,我看到我的过滤器设置的自定义头值是由JSF/ 1.2附加的。
Filter是请求链中的第一个,也是响应链中的最后一个。下面是我用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);
}
我正在使用Tomcat 6。由于我的过滤器是响应链中的最后一个,所以在控件返回到Tomcat连接器后,Tomcat是否再次设置此头?
如何将此值覆盖为我的自定义值?
3条答案
按热度按时间8yoxcaq71#
您在应用程序的其余部分有时间处理响应之前设置了响应标头。您应该在
doFilter
调用之后设置它此外,确保响应isn't committed before setting the header。您可能需要更改其他servlet正在执行的操作或 Package
HttpServletResponse
。如果头是由碧玉引擎添加的,您可以检查它是否为configured that way,
$CATALINA_BASE/conf/web.xml
中的Jasperservlet可能将init-param
xpoweredBy
设置为true
。brccelvz2#
在堆栈溢出上也有类似的问题JSF, override HTTP headers
简而言之:您需要编写一个PhaseListener。在JSF servlet之前似乎调用了一个过滤器,因此当您试图覆盖响应头时,您的头将被覆盖。
y53ybaqx3#
我们可以在Wildfly和Weblogic服务器中删除禁用X Powered By标头。
导航到路径配置⇒子系统⇒Web=〉设置⇒Servlet容器⇒默认=〉JSP
我们可以看到X Powered By标头配置,同样我们可以启用或禁用。
[Wildfly X由针座配置供电] https://i.stack.imgur.com/gs4TT.png
导航到路径主页=〉域分区概要=〉部署概要=〉域分区概要=〉分区概要工作管理器=〉base_domain=〉配置=〉Web应用程序
我们可以看到X Powered By标头配置,同样我们可以使用值启用或禁用。
[Weblogic X Powered By标头配置] https://i.stack.imgur.com/rFvrM.png