express.js 项目中的 CORS 问题
CORS issue in express.js project
我正在尝试开发一个 MERN 项目。我在 express.js
的 server.js
文件中的代码如下所示。
const express = require('express');
const bodyParser = require('body-parser');
const addressroute = require('./api/routes/address');
const userroute = require('./api/routes/user');
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true);
mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true });
const db = mongoose.connection;
var cors = require('cors');
let app = express();
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
app.use(cors());
app.options('*', cors());
const PORT = process.env.PORT || 4000;
app.listen(PORT);
我使用 npm install cors --save
这个命令安装了 CORS。
我遇到了以下错误。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).[Learn More]
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS request did not succeed).
尝试使用以下代码片段:
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
从前端调用您的 api 时添加
'Access-Control-Allow-Origin' : '*'
在 headers 个请求中。
// Try to use the following code
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
尝试在您的路线上方移动 cors
:
const app = express();
const PORT = process.env.PORT || 4000;
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use(cors());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
app.listen(PORT);
您应该在定义路由之前移动要执行的 CORS 中间件 (app.use(cors());
)。在您在此处添加的代码段中,不会在每个请求上调用 CORS 中间件
Cors 应该在您的路由之前启用或包含。
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const addressroute = require('./api/routes/address');
const userroute = require('./api/routes/user');
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true);
mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true });
const db = mongoose.connection;
let app = express();
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use(cors());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
const PORT = process.env.PORT || 4000;
app.listen(PORT);
我正在尝试开发一个 MERN 项目。我在 express.js
的 server.js
文件中的代码如下所示。
const express = require('express');
const bodyParser = require('body-parser');
const addressroute = require('./api/routes/address');
const userroute = require('./api/routes/user');
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true);
mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true });
const db = mongoose.connection;
var cors = require('cors');
let app = express();
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
app.use(cors());
app.options('*', cors());
const PORT = process.env.PORT || 4000;
app.listen(PORT);
我使用 npm install cors --save
这个命令安装了 CORS。
我遇到了以下错误。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).[Learn More]
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:4000/api/users/register. (Reason: CORS request did not succeed).
尝试使用以下代码片段:
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
从前端调用您的 api 时添加 'Access-Control-Allow-Origin' : '*' 在 headers 个请求中。
// Try to use the following code
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
尝试在您的路线上方移动 cors
:
const app = express();
const PORT = process.env.PORT || 4000;
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use(cors());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
app.listen(PORT);
您应该在定义路由之前移动要执行的 CORS 中间件 (app.use(cors());
)。在您在此处添加的代码段中,不会在每个请求上调用 CORS 中间件
Cors 应该在您的路由之前启用或包含。
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const addressroute = require('./api/routes/address');
const userroute = require('./api/routes/user');
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true);
mongoose.connect('mongodb://localhost/addresses', { useNewUrlParser: true });
const db = mongoose.connection;
let app = express();
app.use(bodyParser.urlencoded( { extended:true } ));
app.use(bodyParser.json());
app.use(cors());
app.use('/api/address', addressroute);
app.use('/api/users', userroute);
const PORT = process.env.PORT || 4000;
app.listen(PORT);