kagamihogeの日記

kagamihogeの日記です。

WildFly 10のCache-Controlヘッダ変更

standalone.xmlの以下の箇所を編集する。

        <subsystem xmlns="urn:jboss:domain:undertow:3.1">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="server-header"/>
                    <filter-ref name="x-powered-by-header"/>
                    <filter-ref name="cache-control" predicate="path-suffix['.html']"/><!-- ここ(predicateの中は適宜編集)と -->
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
            <filters>
                <response-header name="server-header" header-name="Server" header-value="WildFly/10"/>
                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
                <response-header name="cache-control" header-name="Cache-Control" header-value="no-cache"/><!-- これを追加 -->
            </filters>
        </subsystem>

個々のURLで任意のヘッダーを返すには、素朴にやるならHttpServletResponse#setHeaderする。

   @RequestMapping("/i.html")
    public String i2(HttpServletResponse response) {
        response.setHeader("Cache-Control", "asdasdf");
        return index();
    }

参考URL