Как добавить поле Access-Control-Allow-Origin в Express.js - PullRequest
0 голосов
/ 21 октября 2019

Я размещаю сервер и клиента на netlify и отправляю запрос POST с аксиосами от клиента. Я получаю следующую ошибку:

Доступ к XMLHttpRequest на «xx.netlify.com/xx» из источника «yy.netlify.com» заблокирован политикой CORS: тип содержимого поля заголовка запроса не разрешенAccess-Control-Allow-Headers в предварительном ответе.

Я попытался установить заголовок для всех ответов, но это не решило мою проблему.

const express = require("express");
const serverless = require("serverless-http");
const fs = require('fs');

const app = express();
const router = express.Router();

app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    next();
});

router.post('/getPositions', (req, res) => {
     return res.status(200).json(obj[i]);
});

app.use("/.netlify/functions/api", router)

module.exports.handler = serverless(app);

1 Ответ

0 голосов
/ 21 октября 2019

Вам необходимо использовать пакет cors для Express.js.

const cors = require('cors')

А затем применить его к своему серверу в качестве промежуточного программного обеспечения для всех маршрутов с:

app.use(cors())

или затем индивидуально на любой маршрут, который вы хотите, например на тот, который у вас есть:

router.post('/getPositions', cors(),  (req, res) => {
    var date = req.body.date;
    fs.readFile('./positions.json', (err, json) => {
        let obj = JSON.parse(json);
        for (var i=0 ; i < obj.length ; i++)
        {
            if (obj[i]["date"] == date) {
                return res.status(200).json(obj[i]);
            }
        }
    });
});
...