Access-Control-Allow-Origin проблема с сервером Koa - PullRequest
0 голосов
/ 09 сентября 2018

Во-первых, имейте в виду, что я уже проверил другие подобные сообщения и не нашел правильного ответа на свой вопрос.

Я разработал клиент-серверное приложение.

Клиентская частьв React, и обслуживается узлом "serve" веб-сервером.Он должен вызывать REST-сервисы, хранящиеся на моем сервере.

Серверная часть является сервером koa (то есть узлом) и обслуживает несколько REST-сервисов.

Оба установлены на одном Raspberry Pi.Эта малина подключена к моей локальной сети.Я настроил брандмауэр своей сети на открытие портов для доступа к моему клиенту и моим службам REST.Я также объявил свой веб-сайт React в сети, чтобы он был доступен.

Так что я могу получить доступ к своему веб-сайту.Но когда я пытаюсь вызвать оттуда мои REST-сервисы (нажав на кнопку), я получаю следующую ошибку (в chrome): в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Происхождение 'http://X.X.X.X' поэтому не разрешено.Ответ содержал код состояния HTTP 403. "

Я попытался установить коа-кор на свои службы REST, но безуспешно. Я попытался настроить его, добавив origin: true, затем origin: XXXX, затем origin:true, учетные данные: true, но все равно не повезло.

На веб-сайте я пытался получить доступ к своим службам REST через XXXX, через localhost, через 127.0.1.1, но ничего лучше.

Пожалуйста, помогите.

[EDIT] код определения моего сервера

const Koa = require('koa');
const app = new Koa();
const cors = require('koa-cors');
const PORT = 8067;

const Router = require('koa-router');
const router = new Router();
const Logger = require('koa-logger');
const respond = require('koa-respond');
const BodyParser = require('koa-bodyparser');
const log4jslogger = require('./libs/logger.js');

app.use(cors());    // << deprecated. Find better method ?
app.use(BodyParser({
  enableTypes: ['json'],
  jsonLimit: '5mb',
  strict: true,
  onerror: function (err, ctx) {
    ctx.throw('body parse error', 422)
  }
}))

app.use(respond());

// API routes
app.use(Logger());
router.use('/users', require('./routes/users'));
app.use(router.routes());
app.use(router.allowedMethods());

const server = app.listen(PORT, () => {
  log4jslogger.warn(`${new Date()} : User server listening on port: ${PORT}`);
});

module.exports = app;

1 Ответ

0 голосов
/ 09 октября 2018

Попробуйте использовать @ koa / cors , этот рекомендуется сейчас.

...