Koa Server的访问控制允许起源问题

时间:2018-09-08 22:02:26

标签: node.js cors cross-domain koa

首先,请记住,我已经检查了其他类似的帖子,但没有找到正确的答案。

我开发了一个客户端/服务器应用程序。

客户端部分位于React中,并由“服务”节点Web服务器提供服务。它必须调用存储在我服务器上的REST服务。

服务器部分是koa服务器(即节点),并提供多种REST服务。

两者都安装在同一Raspberry Pi上。该Raspberry已连接到我的本地网络。我将网络的防火墙配置为打开端口以访问客户端和REST服务。我还在网络中声明了我的React网站,以使其可访问。

因此,我可以很好地访问我的网站。但是,当我尝试从那里(单击按钮)调用REST服务时,出现以下错误(在chrome中):请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://X.X.X.X”。该响应的HTTP状态代码为403。”

我试图在我的REST服务上安装koa-cors,但是没有运气。我尝试通过添加origin:true,然后添加origin:X.X.X.X,然后添加origin:true,凭证:true,来进行配置,但还是没有运气。

在网站上,我尝试通过X.X.X.X,本地主机,127.0.1.1访问REST服务,但没有更好的方法。

请帮助。

服务器定义的[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 :(得分:1)

尝试使用@koa/cors,现在推荐使用此。