Jor*_*dan 5 mongoose mongodb node.js express content-security-policy
我知道有很多类似的问题。但是,我还是 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}`));
Run Code Online (Sandbox Code Playgroud)
我在 package.json 中正确导入了所有内容,因此可能不需要用它发送垃圾邮件。我已连接到 Mongodb,但我确信这没有什么区别。无论如何,当我使用命令启动它时(npm run start),服务器在 localhost:5000 上启动,我立即在 html 页面上看到无法获取 /。在 Firefox 的控制台中,我收到错误消息:
Content Security Policy: The page’s settings blocked the loading of a resource at inline (“default-src”). injectGlobalHook.js:513:49
Run Code Online (Sandbox Code Playgroud)
在 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.
Run Code Online (Sandbox Code Playgroud)
同样在我的终端中,它显示GET / 404 2.201 ms - 139,但仅当我刷新页面时。所以我知道这个错误与 CSP 有关系,它在一个我不应该碰也没有碰过的文件中,但我不知道如何修复它。我以前遇到过这个错误,但我想我只是放弃了那个项目。一个答案会很好,但解释为什么我会收到这个错误会更好。谢谢!
CSP 可以在您的index.html(前端)或Web 服务器(后端)中定义。
对于前端,您应该找到类似的内容:
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src 'self';"/>
<title>
</title>
</head>
Run Code Online (Sandbox Code Playgroud)
根据你的错误提示,需要更换
default-src 'none'
Run Code Online (Sandbox Code Playgroud)
经过
default-src 'self'
Run Code Online (Sandbox Code Playgroud)
至于后端,显然您的 NodeJS 代码中没有 CSP 引用。
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |