How to fix missing strict transport security on Headless / Custom (I build in code)

Add the Strict-Transport-Security (HSTS) response header to every HTTPS page so browsers always use an encrypted connection to your store.

Steps for Headless / Custom (I build in code)

  1. Add the Strict-Transport-Security response header inside your server or middleware layer — see the code snippets below for Node.js (Express), Next.js, and generic server config formats.
  2. For Next.js: Add the header in next.config.js under the headers() async function.
  3. For Express.js: Use the helmet npm package (helmet() includes HSTS by default) or set the header manually with res.setHeader().
  4. For any reverse proxy (Nginx, Apache, Caddy) in front of your application: add the header at the proxy level so it applies to every response regardless of the backend.
  5. Set max-age=31536000 (one year) and includeSubDomains. Test with browser DevTools before enabling preload.
  6. After deploying, verify with securityheaders.com or hstspreload.org.
Official Headless / Custom (I build in code) documentation ↗

What is missing strict transport security?

HTTP Strict Transport Security (HSTS) is a small instruction your web server sends inside every page response that tells browsers: "never load this site over plain HTTP — always use HTTPS, no exceptions." Without it, a browser will happily follow any link or redirect that starts with `http://`, even if your server immediately redirects to `https://`. That brief unencrypted moment is enough for an attacker on the same Wi-Fi network to intercept the request. The HSTS header closes that window entirely by making the browser refuse the insecure connection before it even leaves the device.

Security: Customers shopping on public Wi-Fi are vulnerable to SSL-stripping attacks — where a hacker silently downgrades their HTTPS session to plain HTTP and reads login cookies, payment info, or session tokens in the clear. HSTS prevents this. *SEO & Rankings:* Google uses HTTPS as a confirmed ranking signal and may deprioritize pages that can be reached over HTTP; a strong HSTS policy reinforces your site's "always-HTTPS" status. *Compliance & Legal:* PCI-DSS (required for any store that handles card payments) and GDPR both demand that customer data be encrypted in transit — a missing HSTS header is a finding auditors flag. *Conversions:* Browsers display security warnings for mixed-content or downgrade scenarios; even a brief warning causes visitors to abandon their cart.

See the complete Missing strict transport security guide for every platform and the full background.

Not sure if your Headless / Custom (I build in code) store has this?

Run a free SEOLZ scan — we’ll find missing strict transport security and every other issue across your whole site.

Scan my site free

Fix missing strict transport security on another platform