Content Security Policy (CSP)
Quelles règles CSP autoriser pour que la CMP Sirdata fonctionne entièrement ?
La Content Security Policy (CSP) est une règle de sécurité que votre site envoie au navigateur. Elle liste les domaines depuis lesquels la page a le droit de charger des scripts, des données (JSON), des polices, des images et des styles. Tout ce qui n'y figure pas est bloqué.
Si les domaines de la CMP n'y figurent pas, le navigateur bloque tout ou partie de la CMP.
✅ Reconnaître un blocage
Le symptôme dépend de la règle qui bloque :
La CMP ne s'affiche pas du tout
script-src
La bannière s'affiche, mais l'écran des activités (« Paramétrer vos choix ») est incomplet, ou des partenaires n'ont pas de nom
connect-src
La CMP s'affiche sans mise en forme
style-src
La CMP n'utilise pas la police choisie dans son thème
font-src
Le logo ou l'illustration de la CMP n'apparaît pas
img-src
Pour le confirmer, ouvrez la console du navigateur (touche F12, onglet Console). Chaque blocage y est signalé par un message de ce type :
Refused to connect to 'https://api.consentframework.com/api/v1/public/list/gvl/3?...' because it violates the following Content Security Policy directive: "connect-src ..."⚙ Les règles à ajouter
Ajoutez ces sources à la suite de celles qui existent déjà dans votre CSP :
script-src
https://*.consentframework.com
les scripts de la CMP
connect-src
https://*.consentframework.com
les textes et la liste des partenaires (JSON), l'enregistrement des choix, les statistiques
font-src
https://*.consentframework.com
la police du thème de la CMP
img-src
data: https://*.consentframework.com https://cdn.sirdata.io
les icônes, les illustrations du thème, le logo téléversé dans la plateforme
style-src
'unsafe-inline'
la mise en forme de la CMP
Exemple (l'en-tête tient sur une seule ligne, les règles y sont séparées par ;) :
Pourquoi *.consentframework.com ?
La CMP utilise plusieurs sous-domaines de consentframework.com, et le joker * les couvre tous. Si votre politique de sécurité interdit les jokers, voici le détail :
cache.consentframework.com
script stub
script-src
choices.consentframework.com
script cmp et son code, polices, illustrations
script-src font-src img-src
api.consentframework.com
textes et liste des partenaires (JSON), enregistrement des choix, statistiques
connect-src
mychoice.consentframework.com
consentement partagé entre plusieurs sites
connect-src
🧩 Cas particuliers
Votre CSP utilise un nonce ou 'strict-dynamic'
Ajoutez votre nonce aux balises de la CMP. Les scripts qu'elle charge ensuite sont autorisés par 'strict-dynamic'.
Votre style-src utilise un nonce ou un hash
Le navigateur ignore alors 'unsafe-inline', et la CMP s'affiche sans mise en forme : elle injecte ses styles sans nonce. style-src doit contenir 'unsafe-inline', sans nonce ni hash dans la même règle.
Vous conditionnez des scripts avec la CMP (data-cmp-src)
Les domaines des scripts que vous conditionnez doivent être autorisés dans votre CSP, comme s'ils étaient chargés directement.
Si vous conditionnez une fonction locale (
data-cmp-src="maFonction", voir Conditionnement d'un script local),script-srcdoit contenir'unsafe-eval'. Sans lui, la fonction n'est jamais exécutée.
La CMP est chargée par Google Tag Manager
Le modèle Sirdata charge la CMP depuis https://choices.consentframework.com : les règles ci-dessus suffisent pour la CMP. Google Tag Manager a ses propres exigences, décrites dans le guide CSP de Google.
Si vous renseignez un hôte first-party dans le modèle, ajoutez aussi https://cdn.sirdata.eu à script-src, et votre hôte comme indiqué ci-dessous.
Vous utilisez le conteneur GTM server-side de Sirdata
Votre sous-domaine server-side (par exemple metrics.votre-site.com) sert le code de Google Tag Manager et reçoit ses envois de mesure. Avec l'option Charger le CMP depuis l'hôte server-side, il sert aussi la CMP : ses scripts, ses textes, la liste des partenaires, ses polices et ses illustrations. Ajoutez-le à ces règles :
script-src
https://metrics.votre-site.com
le script d'intégration, Google Tag Manager et les scripts Google servis par le conteneur ; la CMP
connect-src
https://metrics.votre-site.com
les envois de mesure (Google Analytics…) ; les textes, la liste des partenaires et les statistiques de la CMP
img-src
https://metrics.votre-site.com
les envois de mesure sous forme d'image ; les illustrations de la CMP
font-src
https://metrics.votre-site.com
la police du thème de la CMP
frame-src
https://metrics.votre-site.com
l'iframe du service worker de Google, avec l'option Autoriser les Service Workers de Google
Quand la CMP est servie par le conteneur, gardez aussi :
data:ethttps://cdn.sirdata.iodansimg-src: les icônes et le logo téléversé dans la plateforme ;'unsafe-inline'dansstyle-src: la mise en forme de la CMP ;https://mychoice.consentframework.comdansconnect-src, si le consentement est partagé entre plusieurs de vos sites.
Quand la CMP n'est pas servie par le conteneur, appliquez les règles de la CMP décrites plus haut (https://*.consentframework.com).
Les balises que Google Tag Manager charge depuis les domaines de Google (Google Ads, Floodlight, etc.) ont leurs propres exigences, décrites dans le guide CSP de Google.
La CMP est servie depuis votre propre domaine
Domaine de consentement, hôte first-party, CDN personnalisé : ajoutez ce domaine à script-src, connect-src, font-src et img-src. Gardez aussi https://*.consentframework.com : la CMP s'en sert en secours et pour certains appels.
Options qui chargent un script supplémentaire
Partenariat data Sirdata : la CMP charge le tag Sirdata après consentement
https://js.sddan.com
script-src
Le détail des cookies de chaque partenaire
Dans l'écran des partenaires, le lien plus des informations de stockage d'un partenaire IAB TCF charge un fichier JSON publié par ce partenaire, sur son propre domaine (par exemple privacy.criteo.com). Si connect-src bloque ce domaine, le panneau affiche « Informations non disponibles » ; le reste de la CMP fonctionne.
Pour l'afficher, ajoutez à connect-src les domaines de vos partenaires (la console du navigateur les liste quand vous ouvrez ces panneaux), ou https: si vous acceptez d'autoriser toutes les connexions HTTPS.
🔎 Tester et valider
Après modification, rechargez la page (Ctrl + Maj + R), puis ouvrez successivement la bannière, Paramétrer vos choix et l'écran des partenaires. La console ne doit plus afficher aucun message « Refused to … consentframework.com ».
🌟 TL;DR
CMP absente, écran des activités incomplet ou partenaires sans nom ✖ : votre CSP bloque tout ou partie de la CMP
Solution ✔ : ajoutez
https://*.consentframework.comàscript-src,connect-src,font-srcetimg-src, plusdata:ethttps://cdn.sirdata.ioàimg-src, et'unsafe-inline'àstyle-srcConteneur GTM server-side de Sirdata : ajoutez aussi votre sous-domaine server-side à
script-src,connect-src,img-src,font-srcetframe-srcOù ? Dans l'en-tête HTTP
Content-Security-Policyde votre siteTestez : la console du navigateur ne doit plus rien signaler 🚀
Si vous avez un doute, envoyez cette FAQ à votre développeur (il va comprendre tout de suite). Besoin d’aide ? On est là pour vous ! 💡
Mis à jour
Ce contenu vous a-t-il été utile ?
