Google Fonts нарушает правила безопасности контента
Я пытаюсь использовать Google Fonts, и у меня никогда не было никаких проблем, но теперь, когда я пытаюсь добавить файл CSS в свой заголовок, я получаю эту ошибку на консоли:
Отказано, чтобы загрузить таблицу стилей 'http://fonts.googleapis.com/css?family=Whatever'
, поскольку она нарушает следующую директиву политики безопасности контента: "style-src 'self' 'unsafe-inline'"
.
Ответы
Ответ 1
Здесь нужно исправить две вещи:
- Используйте https для ссылки на шрифты Google (
https://fonts.googleapis.com/css?family=Whatever
)
- Авторизуйте
https://fonts.googleapis.com
в директиве style-src
и https://fonts.gstatic.com
в директиве font-src
: "style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com"
Ответ 2
Если вы похожи на меня и немного растеряны, потому что в каждом ответе просто говорится, что вам нужно авторизовать URL-адрес в директиве style-src
, не показывая, как это сделать, вот полный тег:
<meta http-equiv="Content-Security-Policy" content="style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;">
Ответ 3
Для 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>
Надеюсь, это поможет.
Ответ 4
При работе с 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.
],
}
})
);