在开发中,有时会遇到这种问题:通过浏览器去访问一个接口可以正常获取到信息,但是通过点击事件去请求这个接口却无法正常获取到想要的信息。此时,你可能就是遇到跨域问题了, 在Egg中的解决方案如下:
1. 安装插件
代码语言:javascript复制npm i egg-cors --save
2. 配置插件
代码语言:javascript复制// config/plugin.js
exports.cors = {
enable: true,
package: 'egg-cors',
};
3. 配置白名单
代码语言:javascript复制// config/config.default.js
// 配置安全验证
exports.security = {
csrf: {
ignore: ctx => {
// 对指定接口地址忽略验证
if (ctx.request.url == '/admin/goods/goodsUploadImage') {
return true;
}else{
return false;
}
}
},
// 将域名加入白名单
domainWhiteList: ['http://localhost:8080']
};
4. 配置允许跨域
代码语言:javascript复制// config/config.default.js
// 配置允许跨域
exports.cors = {
// 任何地址都可以访问
origin:"*",
// 指定地址才可以访问
// origin: 'http://localhost:8080',
allowMethods: 'GET,PUT,POST,DELETE',
// cookie跨域配置
credentials: true
};
5. 客户端请求配置
代码语言:javascript复制// 以vue-source为例
getUser(){
let url="http://127.0.0.1:7001/api/user";
this.$http.get(url,{
// 配置此项
credentials:true
}).then((result)=>{
console.log(result);
},(err)=>{
console.log(err);
});
}