最近在做node項目,需要提供接口給不同域名的功能使用,於是就產生了跨域問題。下面說一下解決方法:步驟一:# 下載 egg-cors npm i egg-cors --save
1、安裝egg-cors
npm i egg-cors -S
2、在config/plugin.js聲明
exports.cors = { enable: true, package: 'egg-cors', };
3、在config/config.default.js配置
//跨域配置 config.security = { csrf: { enable: false, // 前後端分離,post請求不方便攜帶_csrf ignoreJSON: true }, domainWhiteList: ['http://www.baidu.com', 'http://localhost:8080'], //配置白名單 }; config.cors = { // origin: '*', //允許所有跨域訪問,註釋掉則允許上面 白名單 訪問 credentials: true, // 允許跨域請求攜帶cookies allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH' };
注意,跨域請求時,前端請求打開withCredentials,否則依然無效
$.ajax({ url: 'http://www.baidu.com/api/user/getUserInfo', xhrFields: { withCredentials: true // 攜帶跨域cookie }, success: function(res) { console.log(res); } }); axios({ url: 'http://www.baidu.com/api/user/getUserInfo', withCredentials: true // 攜帶跨域cookie }).then(res => { console.log(res) })
最後注意一點,如果跨域通信,https證書籤名要讓運維搞好,要不然還是會出現跨域問題。