首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点Koa cors不工作

节点Koa cors不工作
EN

Stack Overflow用户
提问于 2018-05-08 15:23:43
回答 2查看 5.6K关注 0票数 1

使用koa + react server.js

guide from npm koa

代码语言:javascript
复制
const Koa = require("koa");
const KoaRouter = require("koa-router");
const static = require("koa-static");
const cors = require('koa2-cors');
const fs = require("fs");
const path = require("path");
const Promise = require("bluebird");
const cheerio = require("cheerio");
const readFileAsync = Promise.promisify(fs.readFile);

// koa & koa router 
var app = new Koa();
var router = new KoaRouter();

app.use(cors());

async function loadHtml(path) {
    try {
        let content = await readFileAsync(path);
        return cheerio.load(content);
    } catch (e) {
        return false;
    }
}

router.get("/", async (ctx, next) => {
    console.log("index page");
    const $html = await loadHtml(path.resolve(__dirname, "/index.html"));
    if (!$html) {
        ctx.body = "Interal Server Error...";
    }else {
        // console.log($html);
        ctx.body = $html.html();
    }
});

app.use(static(path.join(__dirname, "./dist")))

app.use(router.routes()).use(router.allowedMethods());

app.listen(3001, () => {
    console.log("server start at 3001.");
});

和测试组件UserList

代码语言:javascript
复制
class UserList extends React.Component {
    constructor() {
        super();
        this.state = {}
    }

    handleOnClick() {
        // let div = $("#user-list-div");
        let url = "http://localhost:9001/koa/users";
        $.get(url, function(data, status){
            alert("data: " + data + "\nstatus: " + status);
        });
    }

    render() {
        return <div id="user-list-div" onClick={this.handleOnClick}> user list div. </div>;
    }
}

在方法:handleOnClick中,尝试从rest API查询信息(spring-boot),但仍然得到错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:3001' is therefore not allowed access.为什么?

EN

回答 2

Stack Overflow用户

发布于 2018-05-08 15:57:55

根据https://github.com/evert0n/koa-cors/blob/master/examples/custom-options.js中显示的示例,我将尝试在server.js代码中添加以下CORS选项,以允许来自所有来源的请求。

代码语言:javascript
复制
var options = {
    origin: '*'
};

app.use(cors(options));

原始选项控制错误消息中提到的Access-Control-Allow-Origin标头。

票数 3
EN

Stack Overflow用户

发布于 2020-12-11 15:14:50

这是一种方法。

代码语言:javascript
复制
app.use(async (ctx, next) => {
    ctx.set('Access-Control-Allow-Origin', '*');
    ctx.set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
    await next();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50228095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档