【发布时间】: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