Vue如何在webpack設置代理解決跨域問題


在開發過程中我們請求數據有時候調用的是第三方接口,此時便會遇到一個問題:跨域限制。對於跨域問題的解釋就不詳細敘述了,要了解的請自行百度。一般跨域問題控制台會報這個錯:

 

 

很多情況下后台會給我們做請求代理,當后台沒有幫你的時候只能自己解決了,Vue-cli這里我用的是webpack,那么我們需要在webpack上做代理設置,具體步驟如下:
        假設請求地址為http://baidu.com/img/upload/file。
        1.在config/index.js文件的dev: {   proxyTable: { }}寫入要跨域代理的鏈接地址,如下圖所示:
                   
         注意: '/upload'為匹配項,我們匹配項寫'/upload',那么當我們npm run dev把本地服務跑起來后localhost:8080/upload/file就是我們的代理地址了。
                target參數填寫被請求的地址,比如第三方接口,比如上面的http://baidu.com/img/upload/file;
                changeOrigin參數是如果接口跨域需要配置這個參數;
                pathRewrite參數是重寫地址;
                還有一個參數secure,如果是https接口需要配置這個參數;
 
        2.在config/dev.env.js文件中配置,如下圖所示:
                                     
 
        3.在config/prod.env.js文件中配置,如下圖所示:
        注意:在此處的upload填寫'"//baidu.com/img/upload/"',不需要寫'http:',在最后切記要加上'/';
 
        此時webpack的代理配置已經完成,需要重啟服務,然后寫請求函數就可以了,我使用的是axios搭配qs,所以請求函數為:
        export const uploadFile = params => { return axios.post('/upload/file', qs.stringify(params)).then(res => res.data)};
        請求函數各自寫的不一樣,在此只是想表達請求函數第一個參數url要寫'/upload/file',這樣相當於請求http://baidu.com/img/upload/file。至此跨域問題已經解決,親測有效。
 
   配置完要重新編譯 npm run dev
 
  如果執行上面操作還不行試試
  
重裝安裝request模塊,執行:

npm remove request

npm install requset

  配置完要重新編譯 npm run dev

 
          轉載: http://www.cnblogs.com/zishang91/p/8909900.html,以便有錯誤可以及時修改,若有錯漏不足之處,請見諒並且指點,謝謝!!!
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM