Je crée une application Web en utilisant la pile moyenne dans angular 6 mais je reçois un message d'erreur ci-dessous sur la console du navigateur.
"Refus de charger la police '<URL>' car elle enfreint la directive de politique de sécurité du contenu suivante:" default-src 'self' ". Notez que 'font-src' n'était pas explicitement défini, donc 'default-src' est utilisé comme solution de rechange. "
Code:
getUsers() {
return this._http.get("/api/users")
.pipe(map(result => this.result = result.json().data));
}
L'ajout de "soi" et de données: au font-src fonctionne pour moi.
Content-Security-Policy: font-src 'self' data:;
La politique de sécurité du contenu est un moyen pour les navigateurs modernes de définir un ensemble de restrictions lors du chargement des ressources distantes.
Les en-têtes de réponse du protocole HTTP peuvent définir ces stratégies:
Content-Security-Policy
en-tête (officiel),X-Content-Security-Policy
(pris en charge par Mozilla Firefox et IE10) etX-WebKit-CSP
(pris en charge par Google Chrome et Safari) en-têtes de réponse HTTP avec la liste des directives de politique de sécurité du contenu. (from seckit drupal )
Vous pouvez définir différentes stratégies pour différents types d'éléments dans le DOM (par exemple <img>
, <script>
, <object>
, <embed>
, <iframe>
et ainsi de suite ...), pour restreindre les requêtes provenant de cet élément.
Vous devez donc modifier 'self'
à l'un des éléments suivants:
'none'
- bloquer le contenu de n'importe quelle source'self'
- autoriser uniquement le contenu de votre domaine'unsafe-inline'
- autorise un contenu en ligne spécifique (notez qu'il est pris en charge par un sous-ensemble de directives)'unsafe-eval'
- autorise un ensemble d'API chaîne à code qui est restreint par défaut (pris en charge par la directive script-src)Les caractères génériques (*) sont autorisés:
*
- charger du contenu depuis n'importe quelle source*.example.com
- charge le contenu de example.com et tous ses sous-domainesexample.com:*
- charge le contenu d'exemple.com via n'importe quel port. -font-src document de référence de MDN
L'en-tête Content-Security-Policy est défini par votre API. Vérifiez votre réponse api pour sa valeur. Selon l'erreur, je pense que vos polices sont chargées à partir d'un domaine différent de celui de votre domaine d'application. À moins que votre API ne mette ce domaine en liste blanche, votre navigateur ne chargera pas la police.
Exemple:
Content-Security-Policy: font-src https://example.com/