【发布时间】:2020-12-17 23:27:40
【问题描述】:
我知道有很多类似的问题。但是,我还是 MERN 的新手,我正在寻找这个问题的简化答案。
我正在关注 MERN 堆栈上的教程,该应用程序是一个简单的费用计算器,在我们继续添加 Express 和 Mongoose 之前,所有功能都运行良好。这是 server.js 文件,所以你可以看到我的烂摊子:
const path = require('path');
const express = require('express');
const dotenv = require('dotenv');
const colors = require('colors');
const morgan = require('morgan');
const transactions = require('./routes/transactions');
const connectDB = require('./config/db');
dotenv.config({ path: './config/config.env' });
connectDB();
const app = express();
app.use(express.json());
if(process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
}
app.use('api/v1/transactions', transactions);
if(process.env.NODE_ENV === 'production') {
app.use(express.static('client/build'));
app.get('*', (req, res) => res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html')));
}
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`));
我在 package.json 中正确导入了所有内容,因此可能没有必要在聊天中发送垃圾邮件。我已连接到 Mongodb,但我确信这并没有什么不同。无论如何,当我使用命令启动它时,(npm run start),服务器在 localhost:5000 上运行,我立即在 html 页面上看到 Cannot GET /。 在 Firefox 的控制台中,我收到错误消息:
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“default-src”). injectGlobalHook.js:513:49
在 Chrome 上显示:
... it violates the following Content Security Policy directive: "default-src 'none'". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.
还在我的终端中显示 GET / 404 2.201 ms - 139,但仅在我刷新页面时才会显示。所以我知道这个错误与CSP有关,它在一个我不应该接触也没有接触过的文件中,但我不知道如何修复它。我以前遇到过错误,但我想我只是放弃了那个项目。一个答案会很好,但解释我为什么会收到这个错误会更好。谢谢!
【问题讨论】:
-
我认为你需要修改 csp 以允许 img-src
default-src 'none'; img-src: 'self' -
您需要指定更多的内容安全策略。请在下面检查我的答案。还可以在此处检查您当前的安全级别 -> securityheaders.com
标签: node.js mongodb express mongoose content-security-policy