我使用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())
cors可以工作 . 我可以通过在Postman中发送 origin
标头验证结果,然后获取
Access-Control-Allow-Origin
作为响应 Headers .
但是,如果我按此顺序写:
const Koa = require('koa')
var cors = require('koa-cors')
const app = new Koa()
app.use(router.routes())
app.use(cors(options))
cors无法正常工作 .
这有什么问题?我错过了什么?
2 回答
如果你知道
app.use()
的作用,你会明白发生了什么 .use()
函数的作用是:因此,代码序列将影响请求句柄过程 . 它会先将您的请求发送到您的业务代码并做出响应,不会执行cors .
通常,
app.use(router.routes())
应该是最后的中间件 .路由器路由将修改您的请求并对其响应进行操作,因此需要在此之前设置cors头,否则它将无法工作 .