当作先后端分离时,经常遇到跨域访问问题前端
这里我用eggjs作后端,前端经过ajax获取数据ajax
eggjs开启跨域访问,须要用到egg-cors插件npm
egg-cors安装:json
npm i egg-cors --save
开启egg-cors插件:后端
// config/plugin.js exports.cors = { enable: true, package: 'egg-cors', };
配置文件:api
// 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示例:session
$.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); } });