Je voudrais rendre un iframe avec la source étant Github comme ceci:
<iframe src="https://Gist.github.com/user45445/9bf8d568e3350146ba302d7d67ad576f"> </iframe>
Voici l'erreur que j'obtiens dans la console: Refused to display 'https://Gist.github.com/fresh5447/9bf8d568e3350146ba302d7d67ad576f' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'".
Je cherchais comment spécifier mon Content Security Policy
dans mon Node
serveur, pour spécifier qu'il doit accepter tous les iframes de github
J'ai donc installé csp-casque et ajouté ceci à mon code de serveur:
var csp = require('helmet-csp')
app.use(csp({
// Specify directives as normal.
directives: {
frameAncestors: ['*.github.com'], //I thought these two did the same, so I tried them both.
childSrc: ['*.github.com']
},
// Set to true if you only want browsers to report errors, not block them.
// You may also set this to a function(req, res) in order to decide dynamically
// whether to use reportOnly mode, e.g., to allow for a dynamic kill switch.
reportOnly: false,
// Set to true if you want to blindly set all headers: Content-Security-Policy,
// X-WebKit-CSP, and X-Content-Security-Policy.
setAllHeaders: false,
// Set to true if you want to disable CSP on Android where it can be buggy.
disableAndroid: false,
// Set to false if you want to completely disable any user-agent sniffing.
// This may make the headers less compatible but it will be much faster.
// This defaults to `true`.
browserSniff: true
}))
Mais toujours la même erreur ..
J'ai essayé de regarder le documents officiels et le guide des roches HTML5
Je ne sais pas si je suis très proche ou si j'adopte une approche complètement fausse.
J'ai également essayé de définir le CSP via la balise meta
.
<meta http-equiv="Content-Security-Policy" content="child-src https://Gist.github.com; frame-ancestors https://Gist.github.com;">
Content Security Policies delivered via a <meta> element may not contain the frame-ancestors directive.
Comme le souligne oreoshake, le problème ici n'est pas votre CSP, mais le CSP sur GitHub. C'est GitHub qui vous empêche de les encadrer, vous ne pouvez donc rien faire avec votre CSP pour résoudre ce problème.
Le frame-ancestors
value agit sur la source de l'iframe et non sur le document qui l'encadre. La définition de CSP sur votre page n'aura aucun effet sur le cadrage. Penser à frame-ancestors
comme X-Frame-Options
sur les stéroïdes: il restreint ce qui est autorisé à encadrer le contenu. Gist ne permet pas intentionnellement de cadrer directement les gist mais fournit plutôt un moyen d'incorporer un Gist.
frame-ancestors 'none'
== X-Frame-Options: DENY