Ответ 1
Для меня это было из-за расширения Chrome "Grammarly". После этого я не получил ошибку.
Моя реакция webApp дает эту ошибку в браузере
Refused to load the font 'data:font/woff;base64,d09........' because it'
'violates the following Content Security Policy directive: "default-src' ''self'". Note that 'font-src' was not explicitly set, so 'default-src' is used as a fallback.
Также:
Refused to connect to 'ws://localhost:3000/sockjs-node/782/oawzy1fx/websocket' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.
Снимок экрана консоли браузера
index.html Имейте это мета:
<meta http-equiv="Content-Security-Policy" content="img-src 'self' data:; default-src 'self' http://121.0.0:3000/">
WebPack.cofig.js
var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');
module.exports = {
context: path.join(__dirname, "./src"),
devtool: debug ? "inline-sourcemap" : true,
entry: "../src/index.js",
module: {
rules: [
{
test: /\.(jpe?g|png|gif|svg|woff|woff2|eot|ttf)$/i, // a regular expression that catches .js files
exclude: /node_modules/,
loader: 'url-loader',
},
{
test: /\.(js|.jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['react','es2016', 'stage-0',],
plugins: ['react-html-attrs', 'transform-decorators-legacy', 'transform-class-properties'],
}
},
{
test: /\.css$/,
use: [
"style-loader",
{
loader: "css-loader",
}
]
}
]
},
resolve: {
modules: [
path.join(__dirname, "src"),
"node_modules",
]
},
output: {
path: __dirname + "/public/",
// publicPath: "/public/",
filename: "build.js"
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
],
devServer: {
port: 3000, // most common port
contentBase: './public',
inline: true,
historyApiFallback: true,
}
};
Для меня это было из-за расширения Chrome "Grammarly". После этого я не получил ошибку.
Для чего это стоит - у меня была аналогичная проблема, предполагая, что это связано с обновлением Chrome.
Мне пришлось добавить font-src, а затем указать URL-адрес, потому что я использовал CDN
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; font-src 'self' data: fonts.gstatic.com;">
Чтобы исправить эту конкретную ошибку, CSP должен включить следующее:
font-src 'self' data:;
Итак, index.html meta должен читать:
<meta http-equiv="Content-Security-Policy" content="font-src 'self' data:; img-src 'self' data:; default-src 'self' http://121.0.0:3000/">
Из личного опыта всегда лучший, первый шаг для запуска вашего сайта в Incognito (Chrome), Private Browsing (Firefox) и InPrivate (IE11 && Edge), чтобы устранить помехи надстроек/расширений. Они могут по-прежнему мешать тестированию в этом режиме, если они явно включены в их настройки. Тем не менее, это простой первый шаг к устранению неполадок.
Причина, по которой я здесь, была связана с тем, что Web Trust (WoT) добавляет контент на мою страницу, а моя страница имеет очень строгую политику безопасности контента:
Header set Content-Security-Policy "default-src 'none'; font-src 'self' data:; style-src 'self' 'unsafe-inline' data:; img-src 'self' data:; script-src 'self' 'unsafe-inline'; connect-src 'self';"
Это вызвало множество ошибок. Я больше искал ответ о том, как сообщить продлению, чтобы он не пытался и не запускался на этом сайте. Таким образом, когда у людей есть расширения, они просто не будут работать на моем сайте. Я предполагаю, что если бы это было возможно, блокировщики рекламы давно бы были запрещены на сайтах. Поэтому мои исследования немного наивны. Надеюсь, это поможет кому-то еще попытаться диагностировать проблему, которая не связана с несколькими указанными расширениями в других ответах.
У меня была аналогичная проблема. Я упомянул неправильный путь выходных папок в angular.json
"outputPath": "dist/",
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
});
CSP помогает вам переименовывать источники, которым вы доверяете. К другим источникам не разрешен доступ. Внимательно прочитайте этот вопрос и убедитесь, что вы белеете шрифты, соединения сокетов и другие источники, если вы им доверяете.
Если вы знаете, что делаете, вы можете прокомментировать meta
для тестирования, возможно, все работает. Но поймите, что вы/ваш пользователь защищен здесь, поэтому сохранение meta
- это, вероятно, хорошая вещь.
Я также столкнулся с той же ошибкой в моем приложении узла сегодня.
Ниже был мой API узла.
app.get('azureTable', (req, res) => {
const tableSvc = azure.createTableService(config.azureTableAccountName, config.azureTableAccountKey);
const query = new azure.TableQuery().top(1).where('PartitionKey eq ?', config.azureTablePartitionKey);
tableSvc.queryEntities(config.azureTableName, query, null, (error, result, response) => {
if (error) { return; }
res.send(result);
console.log(result)
});
});
Исправление было очень простым, мне не хватало косой черты перед моим API. Поэтому после изменения пути с "azureTable" на "/azureTable" проблема была решена.
Вам может понадобиться добавить это в webpack.config.js
:
devServer: {
historyApiFallback: true
}
};
Если ваш проект vue-cli и вы npm run build
вы должны изменить
assetsPublicPath: '/'
для assetsPublicPath'./'
Во многих местах вы бы использовали встроенные стили, которые CSP (Content Security Policy) запрещает, потому что это может быть опасно.
Просто попробуйте удалить эти встроенные стили и поместить их в выделенную таблицу стилей.
У меня была та же проблема, и которая была решена с помощью ./
перед именем каталога в моем приложении node.js
, т.е.
app.use(express.static('./public'));
Я столкнулся с подобной проблемой.
font-src - сказать браузеру загрузить шрифт из src, который указан после этого. font-src: 'self' - сообщает загрузке семейства шрифтов в пределах одного источника или системы. font-src: 'self' data: - указывает загрузку font-family в том же источнике и вызовы, сделанные для получения данных:
Вы также можете получить предупреждение "** Не удалось декодировать загруженный шрифт, ошибка синтаксического анализа OTS: неверный тег версии **" Добавьте следующую запись в CSP.
font-src: 'self' font
Это должно теперь загрузить без ошибок.
Да, 100% отключают расширение грамматики и ошибки консоли сразу уходят.
У меня была та же проблема, и оказалось, что произошла ошибка в каталоге файла, который я пытался обслуживать вместо:
app.use(express.static(__dirname + '/../dist'));
Я также столкнулся с той же проблемой сегодня в моем работающем коде. Ну, я нашел много ответов здесь. Но важно отметить, что это сообщение об ошибке довольно неоднозначно и явно не указывает на точную ошибку.
Некоторые столкнулись с этим из-за расширений браузера, некоторые из-за неправильных шаблонов URL, и я столкнулся с этим из-за ошибки в моем экземпляре formGroup, использованном во всплывающем окне на этом экране. Поэтому я хотел бы предложить всем, прежде чем вносить какие-либо новые изменения в ваш код, отладьте ваш код и убедитесь, что у вас нет таких ошибок. Вы наверняка найдете реальную причину отладки.
Если больше ничего не работает, проверьте ваш URL, так как это самая распространенная причина этой проблемы.
В моем случае я удалил файл src/registerServiceWorker из приложения, созданного для создания приложения-приложения. Я добавил его, и теперь все работает.