Google Fontsを使用しようとしており、問題は一度もありませんでしたが、ヘッダーにCSSファイルを追加しようとすると、コンソールに次のエラーが表示されます。
スタイルシートの読み込みを拒否しました'http://fonts.googleapis.com/css?family=Whatever'
次のコンテンツセキュリティポリシーディレクティブに違反しているため:"style-src 'self' 'unsafe-inline'"
。
ここで修正することが2つあります。
https://fonts.googleapis.com/css?family=Whatever
)https://fonts.googleapis.com
in style-src
ディレクティブとhttps://fonts.gstatic.com
in font-src
ディレクティブ:"style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com"
あなたが私と似ていて、少し混乱している場合、すべての答えはstyle-src
ディレクティブは、それを行う方法を示すことなく、完全なタグです:
<meta http-equiv="Content-Security-Policy" content="style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;">
Content-Security-Policy
に指定できるソースは複数あります。
以下に明確な詳細があり、私にとってはうまくいきました。
どのコンテンツ(css、img、font、media)ソースエラーがあるかに応じて、以下のURLを変更できます。
<html>
<head>
<meta http-equiv="Content-Security-Policy"
content="
default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval';
style-src 'self' https://fonts.googleapis.com;
font-src 'self' data: https://fonts.gstatic.com;
img-src 'self' data: content:;
media-src *;
"
/>
<title>My page title</title>
</head>
<body>
some text
</body>
</html>
お役に立てば幸いです。
Helmet を使用する場合、次のように完全に機能します(TypeScriptで記述されています)。
import * as express from 'express';
import { Express } from 'express';
const helmet = require('helmet');
const expressApp: Express = express(); // Create Express instance.
expressApp.use(
helmet.contentSecurityPolicy({
directives: {
fontSrc: [
"'self'", // Default policy for specifiying valid sources for fonts loaded using "@font-face": allow all content coming from Origin (without subdomains).
'https://fonts.gstatic.com' // Google Fonts.
],
styleSrc: [
"'self'", // Default policy for valid sources for stylesheets: allow all content coming from Origin (without subdomains).
'https://fonts.googleapis.com' // Google Fonts.
],
}
})
);