vue解決跨域問題

開發模式
要知道,跨域這個行爲是瀏覽器禁止的,可是服務端並不由止。使用proxyTable的原理就是將域名發送給本地的服務器,再由本地的服務器去請求真正的服務器。json

打開config/index.js,修改dev裏的proxyTableapi

proxyTable:{
    '/': {
            target: 'http://www.xxx.cn/api', //你要訪問的服務器域名
            changeOrigin: true, //容許跨域
            pathRewrite: {
                '^/': ''
            }
        }
}

當你在別的頁面請求時只要是/,你只須要/xx/xxx 它就會幫你處理成 http://www.xxx.cn/xx/xxx
假如項目須要請求兩個不一樣的域名,proxytable在上面的基礎上再增長,當請求時/json/xx/xxx開頭的最後都會轉換成http://www.aaa.cn/xx/xxx跨域

'/json': {
            target: 'http://www.aaa.cn/', //你要訪問的服務器域名
            changeOrigin: true, //容許跨域
            pathRewrite: {
                '^/json': ''
            }
        }

但實際上接口是沒有json的,這只是你用來區分請求的一個別名,這時pathRewrite就能夠將/json去掉瀏覽器

生產環境
找到config/pro.env.js服務器

module.exports = {
  NODE_ENV: '"production"',
  API_ROOT: '"http://www.xxx.cn/"'
}

在config目錄下新建api.js文件url

const root = process.env.API_ROOT; //在開發模式下爲會調用代理
export const getList = root + '/list'

這樣配置後你能夠直接在組件寫請求的url不需再判斷處於哪一個模式下,均可以跨域請求。代理

相關文章
相關標籤/搜索