cors-js в приложении ExpressJs блокирует запрос, который должен пройти - PullRequest
0 голосов
/ 14 ноября 2018

Я полагаю, что правильно настраиваю настройки CORS моего экспресс-приложения, но мой запрос все равно не выполняется.

Настройка Express Cors:

app.use(
  cors({
    origin: ["localhost"]
  })
); 
app.options("*", cors()); // include before other routes

Также пробовал

app.use(
  cors()
); 
app.options("*", cors()); // include before other routes

Запрос:

            fetch(`localhost:5000/charge`, {
                method: "POST",
                headers: {
                    "Content-Type": "application/json"
                },
                body: (
                    JSON.stringify({
                        stripeToken: token.id,
                        chargeAmount: Math.round(100 * this.state.donationAmount) // Needs to be an integer in cents
                    })
                )
            })
                .then(res => {
                    return res.text();
                })
                .then(txt => {
                    console.log(txt);
                })

Ошибка браузера:

Доступ к выборке в 'http://localhost:5000/charge' из источника' http://localhost:3000' заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'. Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Есть идеи, что здесь не так? Мне нужны ответы, чтобы no-cors не работал для меня.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Источником была просто строка, а не RegEx.RegEx должно быть определено так: origin: [/.*localhost.*/]

0 голосов
/ 14 ноября 2018

Попробуйте добавить полный URL-адрес внешнего интерфейса, а также добавьте методы, подобные этим:

app.use(cors({
    origin: ['http://localhost:5000'],
    methods: ['GET', 'POST', 'PUT', 'DELETE'],
    credentials: true // enable set cookie
}));
...