Я смог передать эту ошибку с некоторыми локальными временными исправлениями. Но сейчас я перемещаю приложение в сеть. Попытка выяснить эту ошибку CORS в течение двух дней. На моем VDS у меня есть xxxx: 4200 и xxxx: 3000 как angular и nodejs / express setup. Оба могут быть доступны на inte rnet.
То, что я пробовал:
- Установить связанные с CORS заголовки как на клиенте, так и на сервере.
- Установить
app.use(cors());
Возможно, мои попытки были неправильными, поэтому вы можете предложить те же способы с некоторыми пояснениями.
Получить запрос на стороне клиента :
apiUrl = 'http://46.245.165.120:3000/';
this.http.get(this.apiUrl + `users/${type}`, { headers: { 'Authorization': `Bearer ${this.getToken()}` ,
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods': 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token'
}});
Заголовки сервера и настройка CORS:
var originsWhitelist = [
'http://localhost:4200', //this is my front-end url for development
'http://x.x.x.x:4200',
'http://www.myproductionurl.com'
];
var corsOptions = {
origin: function (origin, callback) {
var isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
callback(null, isWhitelisted);
},
credentials: true
};
app.use(cors(corsOptions));
const allowCrossDomain = function (req, res, next) {
var origin = req.headers.origin;
if (originsWhitelist.indexOf(origin) > -1) {
res.header('Access-Control-Allow-Origin', origin);
}
res.header('Access-Control-Allow-Methods', 'OPTIONS, GET, POST'); // added OPTIONS as an allowed method
res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type,x-access-token');
res.header('access-control-allow-credentials', true);
return next();
}
app.use(allowCrossDomain)