Nodejs Hapi - Как включить контроль доступа Cross-Orig

Я работаю в HapiJs Restful web-сервисе и пытаюсь включить cors, поэтому любой клиент даже из разных доменов может использовать мои сервисы. Я попробовал cors = true в объекте подключения к серверу, но не работал.

Ответ 1

Где вы положили cors=true? Не могли бы вы добавить код?

Не знаю точно, где вы положили cors = true, этот бит кода может помочь вам:

server.connection({ routes: { cors: true } })

Или попробуйте добавить разрешенные корты в разделе конфигурации вашего маршрута.

server.route({
    config: {
        cors: {
            origin: ['*'],
            additionalHeaders: ['cache-control', 'x-requested-with']
        }
    },

Взгляните на этот вопрос: hapi.js Cors Pre-flight не возвращается Заголовок Access-Control-Allow-Origin

Ответ 2

Я нашел обходной путь, который работает в Hapi 18. Пожалуйста, установите плагин hapi-cors, установите правильный порт localhost и затем установите плагин:


const start = async function () {
  try {
    await server.register({
      plugin: require('hapi-cors'),
      options: {
        origins: ['http://localhost:4200']
      }
    });
    await server.start();
    console.log('server started');
  } catch (err) {
    console.log(err);
    process.exit(1);
  }
};

start();

Ответ 3

Дополнение к @James111 ответу,

Даже если этот ответ не работает для вас. проверьте наличие дополнительных заголовков аутентификации, которые вы отправляете.

В моем случае это был X_AUTH_TOKEN, поэтому в additionalHeaders вы также можете добавить свой пользовательский заголовок.

например

additionalHeaders: ['cache-control', 'x-requested-with', 'X_AUTH_TOKEN']