koajs - koa2跨域

查看:298
本文介绍了koajs - 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 ...')
});

解决方案

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

这篇关于koajs - koa2跨域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆