Ошибка при работе с CORS policy
Код post-запроса такой:
const bodyParser = require('body-parser');
const {Router} = require('express');
const router = Router();
let jsonParser = bodyParser.json();
router.post('/', jsonParser,(req, res) => {
res.set('Access-Control-Allow-Origin', req.headers.origin);
res.set('Access-Control-Allow-Methods', 'POST');
res.set("Access-Control-Allow-Headers", "Content-Type");
console.log(req.body);
res.json('Hi')
});
module.exports = router;
Прочел уже информацию во многих источниках о предзапросах к стороннему домену, однако получаю все равно ошибку: Access to fetch at 'http://localhost:3000/' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Устанока mode: 'no-cors' конечно, проблему решает, но хотел обойтись без этого. В чем я ошибаюсь?
Ответы (1 шт):
Автор решения: Alexander Yukal
→ Ссылка
var express = require('express');
var app = express();
function processCors(req, res, next) {
res.header('Access-Control-Allow-Origin', 'YOUR-DOMAIN.TLD');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.header('Access-Control-Allow-Methods', 'POST');
next();
}
app.use(processCors);
app.listen(...);