koa2跨域
用koa2
尝试写了一个RESTful api
,但是调试这个接口的时候,发现需要跨域,于是我引入了koa-cors
这个koa
插件,控制台还是提示存在跨域问题,然后我百度一下,说加header
配置项
this.set('Cache-Control','no-cache');
this.set('Access-Control-Allow-Origin','*');
就是上面这个,测试了一下,还是没用,想也想半天了,看不出问题出在哪里,求大神帮忙看下,源码如下
var koa = require('koa');
var router = require('koa-router');
var co = require('co');
var fs = require('fs');
var cors = require('koa-cors');
var app = new koa();
var route = new router();
var filePath = './app/user.json';
var readFromFile = function(){
return new Promise(function(resolve,reject){
fs.readFile(filePath,function(err,data){
if(err){
reject(err)
}
resolve(data)
})
})
}
route.get('/user',co.wrap(function*(ctx,next){
// this.set('Cache-Control','no-cache');
// this.set('Access-Control-Allow-Origin','*');
var user = JSON.parse(yield readFromFile())
ctx.body = JSON.stringify({status:'success',data:user})
// try{
// var user = JSON.parse(yield readFromFile())
// ctx.body = JSON.stringify({status:'success',data:user})
// }catch(err){
// ctx.status = 500;
// ctx.body = JSON.stringify({status:'fail'})
// }
}))
app.use(cors())
app.use(route.routes()).use(route.allowedMethods())
app.listen(3000,function(){
console.log('start in 3000 port ...')
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你的跨域插件是koa1的,你试试看这个 koa2-cors 。我用这个是没问题的,也不需要再设置请求头。
好像是顺序的问题, 你应该吧 app.use(cors()) 放在所有的 router 之前。
https://www.itying.com/koa/ar... 看看这个帖子 koa2后台允许跨域
ctx.set('Access-Control-Allow-Origin','*')
把cors放在前面就好了