Un site envoie l'en-tête Strict-Transport-Security en HTTPS, avec un max-age en secondes. Dès lors, et pendant cette durée, le navigateur réécrit tout lien http:// vers le site en https:// avant d'envoyer quoi que ce soit, et refuse de laisser l'utilisateur passer outre les erreurs de certificat. includeSubDomains étend la règle à tous les sous-domaines.
La première visite reste sans protection, car le navigateur n'a pas encore vu l'en-tête. La liste de préchargement (preload) comble cette lacune : les domaines qui envoient l'en-tête avec un max-age long, includeSubDomains et le jeton preload peuvent être soumis à une liste intégrée aux navigateurs. Certains TLD entiers, comme .app et .dev, figurent sur cette liste.
HSTS est facile à activer et lent à désactiver. Une fois que les navigateurs ont mis en cache un max-age long, ou que le domaine est préchargé, chaque sous-domaine doit fonctionner en HTTPS avec un certificat valide, y compris les hôtes internes ou anciens. Commencez par un max-age court, vérifiez tous les sous-domaines, puis augmentez-le. L'en-tête est ignoré lorsqu'il est envoyé en HTTP en clair.
Exemple
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload