Referencing HTTP headers in a Freemarker template

This article explains how to access HTTP headers from within a Freemarker template.

The data model includes a hidden httpRequest object that can be referenced from with Freemarker templates.

Example: Print all the HTTP headers

The following code prints out (inside HTML comments) the HTTP request headers to assist with debugging.

Freemarker template (e.g. simple.ftl)
<!--
+===================+
| DEBUG INFORMATION |
+===================+

HTTP REQUEST HEADERS
--------------------
<#assign headers=httpRequest.getHeaderNames()>

<#list headers as header>
<#assign hval=httpRequest.getHeader(header)>
'${header}': '${hval}'
</#list>
-->

Example: Use a header to switch what’s displayed

The following code reads a custom http header attribute (X-Funnelback-form) and uses this as a condition within an if statement:

Freemarker template (e.g. simple.ftl)
<#ftl encoding="utf-8" />
<#import "/web/templates/modernui/funnelback_classic.ftl" as s/>
<#import "/web/templates/modernui/funnelback.ftl" as fb/>
<html lang="en">
     <head>
         <#assign  mtype=httpRequest.getHeader('X-Funnelback-form')>
         <#if mtype == "mobile">
             <#include "simple-mobile.ftl">
         <#else>
             <#include "simple-basic.ftl">
        </#if>
     </head>
     <body></body>
</html>