node egg 實現跨域

最近在做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證書籤名要讓運維搞好,要不然還是會出現跨域問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章