koa2跨域

发布于 2022-09-05 00:35:12 字数 1472 浏览 13 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

七月上 2022-09-12 00:35:12

你的跨域插件是koa1的,你试试看这个 koa2-cors 。我用这个是没问题的,也不需要再设置请求头。

南街九尾狐 2022-09-12 00:35:12

好像是顺序的问题, 你应该吧 app.use(cors()) 放在所有的 router 之前。

不醒的梦 2022-09-12 00:35:12

https://www.itying.com/koa/ar... 看看这个帖子 koa2后台允许跨域

恍梦境° 2022-09-12 00:35:12

ctx.set('Access-Control-Allow-Origin','*')

半山落雨半山空 2022-09-12 00:35:12

把cors放在前面就好了


app.use(cors())

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'})
    // }
}))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文