У меня есть стековое приложение 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');
});
Я запускаю front-end как 'ng serve' в терминале. Я использую версию FireFox 40.0.3 в Ubuntu