在JBoss EAP 7中配置Http Headers

7
你知道是否有一种标准的方法来配置JBoss EAP 7发送到客户端的Http Headers吗?我主要想能够配置以下内容:
- X-XSS-Protection - X-Frame-Options - Strict-Transport-Security - Content-Security-Policy - X-Content-Type-Options
我在互联网上找到了这个链接,但是我不确定它是否适用于我感兴趣的标头。
谢谢!链接:https://blog.akquinet.de/2017/08/03/wildfly-8-10-and-jboss-eap-7-verbose-http-headers/

为什么不试试呢?我觉得如果您拥有 EAP 全局标头,它应该可以正常工作,我看不出任何理由阻止它。 - eis
2个回答

13

根据 JBoss EAP 7 文档:

以前的 JBoss EAP 版本支持阀门。阀门是插入到应用程序请求处理管道中的自定义类,位于 Servlet 过滤器之前,可对请求进行更改或执行其他处理。全局阀门将插入到所有已部署应用程序的请求处理管道中。身份验证阀门会验证请求的凭据。阀门是通过扩展 org.apache.catalina.valves.ValveBase 类创建并在 jboss-web.xml 描述符文件的 element 中进行配置。

Undertow 取代 JBoss EAP 7 中的 JBoss Web,不支持阀门;但是,您可以使用 Undertow 处理程序来实现类似的功能。 Undertow 包括许多内置处理程序,提供常见功能。 它还提供了创建自定义处理程序的能力,可用于替换自定义阀门功能。

对于复杂情况仍然可以选择这种方法,但是现在在使用 Undertow 添加响应标头时已经变得更加简单,因为您只需将自定义标头添加到 JBoss Undertow 子系统即可。您的过滤器部分将从以下内容更改:

<filters>
    <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
    <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>


到这里:

<filters>
    <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
    <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
    <!-- Begin custom Headers -->
    <response-header name="x-xss-protection" header-name="X-XSS-Protection" header-value=""/>
    <response-header name="x-frame-options" header-name="X-Frame-Options" header-value=""/>
    <response-header name="strict-transport-security" header-name="Strict-Transport-Security" header-value=""/>
    <response-header name="content-security-policy" header-name="Content-Security-Policy" header-value=""/>
    <response-header name="x-Content-type-options" header-name="X-Content-Type-Options" header-value=""/>
</filters>

我会让其他人决定他们想要为标题设置哪些值(这样在复制/粘贴时就可以避免一些编辑)


你能给我一个例子,说明如何使用自定义阀门jar全局设置这些头信息吗? - Alex Mi
我正在更新答案,JBoss EAP 7现在使用Undertow而不是JBoss WEB和Tomcat,因此不再支持Valves。 - JGlass
哎呀,我本来以为我得为你找一些自定义处理程序的代码,我在在WildFly中配置自定义Undertow过滤器中找到了它,其中还列出了如何添加模块,然后使用这个进行子系统配置。但是我刚刚发现了一个更简单的方法,应该会让你更加开心,因为它不那么复杂,等一下我会发布它。如果有帮助,请随时接受我的答案并让我知道! - JGlass
@AlexMi - 你有试过吗? - JGlass
谢谢您的努力!实际上,我已经将它转发给我们的IT架构师。 - Alex Mi
显示剩余4条评论

3

查看Jboss EAP 7的链接: 配置过滤器

在JBoss EAP 7目录下打开standalone.xml文件,并在该xml文件中搜索“urn:jboss:domain:undertow”,然后添加自定义过滤器规则,如下所示:

<filters>
  <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
  <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
  <!--your custom rules in detail-->
  <response-header name="x-frame-options" header-name="X-Frame-Options" header-value=""/>
</filters>

不要忘记在代码中添加 <filter-ref name="x-frame-options"/>
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <filter-ref name="server-header"/>
                <filter-ref name="x-powered-by-header"/>
                <!--declare your custom rules here-->
                <filter-ref name="x-frame-options"/>
                <single-sign-on http-only="true" secure="true"/>
                <http-invoker security-realm="ApplicationRealm"/>
 </host>
</subsystem>

这是真实的答案。 - KnockingHeads

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接