【问题标题】:how to allow Access-Control-Allow-Origin with koa如何使用 koa 允许 Access-Control-Allow-Origin
【发布时间】:2019-05-21 03:06:37
【问题描述】:

我是 Koa 新手,遇到了一个使用 epxress 时没有遇到的问题。

这是我的代码:

const koa = require("koa");
const koaRouter = require("koa-router");
const app = new koa();
const router = new koaRouter();
const cors = require('koa-cors');
const bodyParser = require("body-parser");

const port = 8080;

app.use(router.routes()).use(router.allowedMethods());
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

app.listen(port, () => {
  console.log("server koa started " + port);
});

router.get("/id/:id", async (ctx) => {
  const id = ctx.params.id;
  console.log("id was " + id);
  ctx.body = {
    "id": id
  }
});

router.get("/", async (ctx) => {
  ctx.body = {
    "message": "hello"
  }
});

当我想从我的网络服务器调用它时,我得到了这个:

Access to fetch at 'http://localhost:8080/id/azerty' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

我能做些什么来解决这个问题? 谢谢

【问题讨论】:

    标签: node.js koa


    【解决方案1】:

    看这里Koa cors module

    const Koa = require('koa');
    const cors = require('@koa/cors');
    
    const app = new Koa();
    app.use(cors());
    

    您没有在代码中使用该模块。

    【讨论】:

    • 另外值得一提的是 app.use(cors()) 必须在任何路由之前(即 app.use(router.routes()))。
    【解决方案2】:

    您需要 cors 模块,但尚未将 cors 添加到 app.use() 中间件。

    app.use(cors())   // Add this new line 
    app.use(router.routes()).use(router.allowedMethods());
    app.use(bodyParser.urlencoded({extended: false}));
    app.use(bodyParser.json());
    

    【讨论】:

    • 我做到了,问题来自 chrome。我们需要在 chrome 中安装 Access-Control-Allow-Origin 插件然后它才能工作;)
    猜你喜欢
    • 2015-06-17
    • 2013-09-09
    • 1970-01-01
    • 2012-03-08
    • 2012-06-07
    • 2011-11-05
    相关资源
    最近更新 更多