Vue Ajax跨域請求

思路

配置webpack-dev-server,代理某一個路徑到目標路徑,同是更改源和重寫

Vue里定義一個全部變量:site
Vue.prototype.site = '/api/';
此后發(fā)送的ajax請求都使用此變量來組合(為了方便管理,當(dāng)需要更改時直接更改次變量)

設(shè)置webpack的代理和重寫
在 config/index.js里修改dev選項

 dev: {
    env: require('./dev.env'),
    port: 8080,
    autoOpenBrowser: true,
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api':{
        target:'http://xxxx.com/api',
        changeOrigin:true,
        pathRewrite:{
            '^/api':''
        }
      }
    },

主要看proxyTable選項:
/api 是要代理的目錄,target 是目標URL,即后臺接口的真正位置
changeOrigin 為是否修改源,當(dāng)時用ajax且跨域測試時需為true
pathRewrite 為路由重定向

工作流程:
當(dāng)檢測到有URL請求且是/api 路徑時就修改請求URL,把請求URL中的/api 替換為target里的值,同時改變源讓瀏覽器認為不是跨域請求
example: 我發(fā)送一個ajax請求,路徑為 /api/test.php ,那修改后真實請求的url就是 http://xxxx.com/api/test.php

注意 因為部署到服務(wù)器上時不再使用webpack,所以你需要修改ajax請求的url,當(dāng)你使用之前說的全局變量時只需要修改下全局變量就好
,更好的實踐是根據(jù)部署代碼的位置和后臺api的未知來設(shè)置需要代理的路徑
假如部署的前端代碼index.html在根目錄下,后臺api在/test/下,那么把代理路徑設(shè)置為/test更勝一籌

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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