私の反応ウェブアプリケーションはブラウザコンソールでこのエラーを与える
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のアップデートに関連していると仮定して、私は同様の問題を抱えていた。
私はCDNを使用していたので私はfont-srcを追加し、それからURLを指定しなければなりませんでした
<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 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 of 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は、信頼している情報をホワイトリストに登録するのに役立ちます。他のすべての情報源へのアクセスは許可されていません。 --- このQ&A をよく読んで、それから信頼できるのであれば、フォント、ソケット接続、その他の情報をホワイトリストに載せるようにしてください。
あなたが何をしているのか知っていれば、テストするために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'に変更した後、問題は解決しました。
私は同じ問題を抱えていた、それは私がしようとしていたファイルのディレクトリにエラーがあったことが判明しました:代わりに:
app.use(express.static(__dirname + '/../dist'));
私は持っていました:
app.use(express.static('./dist'));
私は同じ問題を抱えていて、./
アプリのディレクトリ名の前にnode.js
を使うことで解決しました。
app.use(express.static('./public'));
私は同様の問題に直面していました。
font-src - その後に指定されたsrcからフォントをロードするようブラウザに指示します。 font-src: 'self' - これは同じOriginまたはシステム内のフォントファミリをロードするように指示します。 font-src: 'self' data: - これは、同じOrigin内のload font-familyとデータ取得のための呼び出しを指示します。
また、「**ダウンロードしたフォントのデコードに失敗しました。OTS解析エラー:無効なバージョンタグ**」という警告が表示される場合があります。
font-src: 'self'フォント
これでエラーなくロードされるはずです。
あなたは多くの場所でインラインスタイルを使用していたでしょう、CSP(Content Security Policy)はそれが危険かもしれないので禁止します。
単にそれらのインラインスタイルを削除して専用のスタイルシートの中に入れてみてください。
あなたのプロジェクトがvue-cliであなたがnpm run build
を実行するならば、あなたは変えるべきです
assetsPublicPath: '/'
からassetsPublicPath'./'