web-dev-qa-db-fra.com

Refusé de charger le script car il enfreint la directive suivante relative à la politique de sécurité du contenu: "style-src 'self"' unsafe-inline '

J'utilise MVC6 (asp.net 5) avec angular et j'essaie de charger des scripts à partir d'emplacements CDN lorsque mon code s'exécute en mode de publication, mais pour une raison quelconque, les scripts ne se chargent jamais.

J'ai lu que vous devez ajouter une balise META à votre fichier HTML, ce que j'ai fait, comme ça.

<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; style-src 'self' https://ajax.aspnetcdn.com; font-src 'self' http://netdna.bootstrapcdn.com" />

Et sur mon Index.cshtml, j'ai ceci.

<environment names="Staging,Production">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"
        asp-fallback-src="~/lib/angular/angular.min.js"
        asp-fallback-test="window.angular">
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.15/angular-ui-router.min.js"
        asp-fallback-src="~/lib/angular-ui-router/release/angular-ui-router.js"
        asp-fallback-test="window.angular && window.angularUiRouter">
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-local-storage/0.2.2/angular-local-storage.min.js"
        asp-fallback-src="~/lib/angular-local-storage/dist/angular-local-storage.js"
        asp-fallback-test="window.angular && window.localStorage">
    </script>

Mais ils ne chargent jamais. J'ai essayé d'exécuter le code avec IISExpress et également avec la commande DNX Web.

J'ai this post, c’est ainsi que j’ai créé la balise META, mais je ne sais pas pourquoi cela ne fonctionne pas. J'ai essayé ceci dans Chrome, et sous la console, je reçois juste des erreurs comme

 enter image description here

10
Gillardo

Placez les éléments suivants dans la section en-tête de la page Web:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://cdnjs.cloudflare.com ">

Plus de détails sur la politique de sécurité du contenu peuvent être lus ici et ici .

4
drcolombo

Si vous souhaitez résoudre le problème, ajoutez ce qui suit dans votre fichier application.conf.

play.filters.disabled += "play.filters.headers.SecurityHeadersFilter"
1
edc

Dans mon cas, cette stratégie est définie via SecurityHeadersAttribute (cet attribut est défini dans AccountController et quelques autres).

Fondamentalement, cela ajoute une stratégie par défaut dans la variable headers qui remplace votre balise meta. Vous devez donc modifier cette stratégie ou supprimer l'attribut de Controller.

0
Vadym Kyrylkov