我在前端有一个用于简单寄存器功能的MEAN堆栈应用程序。尝试注册用户时出现以下错误。
跨域请求被阻止:“同源起源”策略禁止读取http://localhost:8080/api/signup处的远程资源。 (原因:CORS请求失败)。
我的app.js文件在服务器端如下。
var express = require('express');
var bodyparser = require('body-parser');
var mongo = require('mongoose');
var cors = require('cors');
var app = express();
//CORS Middleware
app.use(function (req, res, next) {
//Enabling CORS
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, x-client-key, x-client-token, x-client-secret, Authorization");
next();
});
const appRouter = require('./router/router');
var db = mongo.connect('mongodb://localhost:27017/theme-alpha-new', { useNewUrlParser: true }, function(err,res){
if(err) {console.log(err);}
else {
console.log('connected to ' + db + ' + ' + res);
}
});
app.use(bodyparser);
app.use(bodyparser.json({limit: '5mb'}));
//app.options('*', cors());
//app.use(cors());
app.use(bodyparser.urlencoded({extended: true}));
app.use('/api', appRouter);
function errorHandler(err, req, res, next) {
if (typeof (err) === 'string') {
return res.status(400).json({ message: err });
}
if (err.name === 'ValidationError') {
return res.status(400).json({ message: err.message });
}
if (err.name === 'UnauthorizedError') {
return res.status(401).json({ message: 'Invalid Token' });
}
return res.status(500).json({ message: err.message });
}
module.exports = errorHandler;
app.listen('8081', function(){
console.log('Theme-alpha-new listening on port 8081');
});
我在终端中以“ ng服务”方式运行前端。我在Ubuntu中使用FireFox 40.0.3版本