【问题标题】:Access-Control-Allow-Origin issue with Koa ServerKoa 服务器的 Access-Control-Allow-Origin 问题
【发布时间】:2019-02-13 19:43:51
【问题描述】:

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

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

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

服务器部分是一个 koa 服务器(so 节点),服务于多个 REST 服务。

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

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

我尝试在我的 REST 服务上安装 koa-cors,但没有成功。我尝试通过添加origin:true,然后origin:X.X.X.X,然后origin:true,credentials:true来配置它,但仍然没有运气。

在网站上,我尝试通过 X.X.X.X、localhost、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;

【问题讨论】:

    标签: node.js cors cross-domain koa


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 2016-09-20
      • 2023-02-14
      • 2019-05-21
      • 1970-01-01
      相关资源
      最近更新 更多