我将Koa与Node.js 8.1一起使用。
今天我发现在我的app.js中,如果我按此顺序写的话:
const Koa = require('koa')
var cors = require('koa-cors')
const app = new Koa()
app.use(cors(options))
app.use(router.routes())
这些人可以工作。我可以通过在Postman中发送origin
标头验证结果,然后获取
访问控制允许来源
作为回复标题。
但是,如果我按此顺序写:
const Koa = require('koa')
var cors = require('koa-cors')
const app = new Koa()
app.use(router.routes())
app.use(cors(options))
cors无法正常工作。
这里有什么问题?我错过了什么?
答案 0 :(得分:2)
如果你知道app.use()
做了什么,你就会明白发生了什么。
use()
函数的作用是:
use(fn) {
this.middleware.push(fn);
return this;
}
因此,代码序列将影响请求句柄过程。它会先将您的请求路由到您的业务代码并做出响应,但不会执行cors。
通常,app.use(router.routes())
应该是最后的中间件。
答案 1 :(得分:2)
路由器路由将修改您的请求并对其响应进行操作,因此需要在此之前设置cors标头,否则它将无法正常工作。