当做前后端分离时,常常遇到跨域访问问题
这里我用eggjs做后端,前端通过ajax获取数据
eggjs开启跨域访问,需要用到egg-cors插件
egg-cors安装:
npm i egg-cors --save
开启egg-cors插件:
// config/plugin.js
exports.cors = {
enable: true,
package: 'egg-cors',
};
配置文件:
// config/config.default.js
// 配置指定的前端地址
config.cors = {
origin: 'http://127.0.0.1:7002',
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
// 下面这条加上才能共享跨域session,同时前端ajax请求也要加上响应的参数
credentials: true,
};
config.security = {
// 关闭csrf验证
csrf: {
enable: false,
},
// 白名单
domainWhiteList: ['*']
};
路由加上:
router.post('/api/test/list', controller.api.test.list);
前端ajax示例:
$.ajax({
url: 'http://127.0.0.1:7001/api/test/list',
type: "POST",
json: true,
xhrFields: {
withCredentials: true
},
precessData: false,
success: function(result) {
if (result.success) {
console.log(result.msg);
console.log(result.result);
} else {
console.log(result);
}
},
error: function(responseStr) {
console.log(responseStr);
}
});