Происхождение CORS не определено с простым nodejs сервером - PullRequest
0 голосов
/ 23 апреля 2020

У меня очень простой nodejs сервер, но использование пакета 'cors', похоже, по какой-то причине не распознает источник запроса.

Вот моя nodejs конфигурация сервера:

const cors = require('cors');
const express = require('express');

const CORS_WHITELIST = [ 'http://localhost:5000' ];

const corsOptions = {
  origin: (origin, callback) => {
    console.log(origin) // ----> this is always 'undefined'
    if (CORS_WHITELIST.indexOf(origin) !== -1){
      callback(null, true)
    } else {
      callback(new Error('Not allowed by CORS'))
    }
  }
};

const configureServer = app => {
    app.use(cors(corsOptions));
};

module.exports = configureServer;

Вот мой начальный файл сервера:

const express = require('express');

const SERVER_CONFIGS = require('./constants/server');

const configureServer = require('./server');
const configureRoutes = require('./routes');

const app = express();

configureServer(app);
configureRoutes(app);

app.listen(SERVER_CONFIGS.PORT, error => {
  if (error) throw error;
  console.log('Server running on port: ' + SERVER_CONFIGS.PORT);
});

Я запускаю этот сервер на localhost, но источник в обратном вызове cors всегда 'undefined'. Например, когда я открываю http://localhost: 5000 в браузере или выполняю вызов curl.

Как использовать cors, чтобы он не блокировал запрос на localhost?

1 Ответ

1 голос
/ 23 апреля 2020

Я прочитал этот вопрос и req.headers.origin не определен вопрос, а также CORS и заголовок источника !

source :

Источник может быть скрыт, если пользователь приходит с зашифрованного ssl-сайта.

Также: некоторые расширения браузера удаляют origin и referer из заголовков http-запроса. и, следовательно, свойство origin будет пустым.

Существует решение , чтобы решить эту проблему путем добавления промежуточного программного обеспечения:

app.use(function (req, res, next) {
  req.headers.origin = req.headers.origin || req.headers.host;
  next();
});

Надеюсь, это поможет , Проблема в awaiting more info состоянии!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...