vue-cli下配置webpack的proxy參數(shù)進(jìn)行反向代理

在平時(shí)本地開發(fā)過程中,容易遇到跨域問題,導(dǎo)致接口無法調(diào)通。這時(shí)候有多種方式解決,

  1. 后端支持CORS
  2. nginx反向代理
  3. 使用jsonp請求
  4. 使用http-proxy-middleware代理
    下面介紹的這種方式是webpack自帶的devServer,devServer中集成了http-proxy-middleware。配置devServer的proxy選項(xiàng)即可。代碼如下:
// 以下代理作用 =>  替換/api為localhost:3000/api,并且修改cookie的path
proxy: {
  '/api': {
    target: 'http://localhost:3000',
    changeOrigin: true,
    onProxyRes: function(proxyRes, req, res) {
      var cookies = proxyRes.headers['set-cookie'];
      var cookieRegex = /Path=\/XXX\//i;
      //修改cookie Path
      if (cookies) {
        var newCookie = cookies.map(function(cookie) {
          if (cookieRegex.test(cookie)) {
            return cookie.replace(cookieRegex, 'Path=/');
          }
          return cookie;
        });
        //修改cookie path
        delete proxyRes.headers['set-cookie'];
        proxyRes.headers['set-cookie'] = newCookie;
      }
    }
  }
}

假設(shè)使用axios進(jìn)行http請求

const api = axios.create({
    baseURL: '/api'
})

而接口配置類似如下,則會(huì)請求http://localhost:3000/api/getMenuList的接口:

export default {
    // 獲取菜單列表
    async getMenuList (params) {
        let res = await api.get('/getMenuList', {
            params: params
        })
        return res
    }
}

proxy還有一個(gè)rewrite功能,如下
以下代理作用 => 替換/api為localhost:3000,并且修改cookie的path

proxy: {
  '/api': {
    target: 'http://localhost:3000',
    changeOrigin: true,
    pathRewrite: {
       '^/api': ''
    }
    onProxyRes: function(proxyRes, req, res) {
      var cookies = proxyRes.headers['set-cookie'];
      var cookieRegex = /Path=\/XXX\//i;
      //修改cookie Path
      if (cookies) {
        var newCookie = cookies.map(function(cookie) {
          if (cookieRegex.test(cookie)) {
            return cookie.replace(cookieRegex, 'Path=/');
          }
          return cookie;
        });
        //修改cookie path
        delete proxyRes.headers['set-cookie'];
        proxyRes.headers['set-cookie'] = newCookie;
      }
    }
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    Yaoxue9閱讀 1,414評(píng)論 0 6
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    他方l閱讀 1,141評(píng)論 0 2
  • 入職新公司以來,第一個(gè)月接手vue項(xiàng)目,第二個(gè)月接手angularjs項(xiàng)目,第三個(gè)月加入react重構(gòu)項(xiàng)目。心生感...
    趁你還年輕233閱讀 11,846評(píng)論 2 8
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    HeroXin閱讀 962評(píng)論 0 4
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,943評(píng)論 1 92

友情鏈接更多精彩內(nèi)容