詳解webpack的proxyTable無效的解決方案
最近遇到這個(gè)需要單頁訪問跨域后臺(tái)的問題。
可以按照如下設(shè)置:
proxyTable: { '/list': { target: 'http://api.xxxxxxxx.com', pathRewrite: { '^/list': '/list' } } }
這樣我們在寫url的時(shí)候,只用寫成/list/1就可以代表api.xxxxxxxx.com/list/1.
那么又是如何解決跨域問題的呢?其實(shí)在上面的'list'的參數(shù)里有一個(gè)changeOrigin參數(shù),接收一個(gè)布爾值,如果設(shè)置為true,那么本地會(huì)虛擬一個(gè)服務(wù)端接收你的請求并代你發(fā)送該請求,這樣就不會(huì)有跨域問題了,當(dāng)然這只適用于開發(fā)環(huán)境。增加的代碼如下所示:
proxyTable: { '/list': { target: 'http://api.xxxxxxxx.com', changeOrigin: true, pathRewrite: { '^/list': '/list' } } }
遇到了網(wǎng)上很多人說的,proxyTable
無論如何修改,都沒效果的現(xiàn)象。
經(jīng)過幾輪測試,總結(jié)出一下幾種解決方案:
1.(非常重要)確保proxyTable配置的地址能訪問,因?yàn)槿绻荒茉L問,在瀏覽器F12調(diào)試的時(shí)候看到的依然會(huì)是提示404。
并且注意,在F12看到的js提示錯(cuò)誤的域名,是js寫的那個(gè)域名,并不是代理后的域名。
另外配置正常的話,在idea的控制臺(tái),會(huì)有錯(cuò)誤提示顯示,例如:
Your application is running here:http://localhost:8082 [HPM] Error occurred while trying to proxy request /api/user/ts from localhost:8082 to http://localhost:1920/ (ECONNREFUSED)
2.(奇葩解決)個(gè)人感覺這個(gè)http代理的插件有緩存,proxyTable
的修改會(huì)無效,這時(shí)候可以嘗試修改啟動(dòng)項(xiàng)目的端口,就在proxyTable
屬性配置的下面幾行有個(gè)port: 8080
,改成其他,例如8081
,就會(huì)有效,然后再改回來就好。
3.這個(gè)比較多人說了,就是要手動(dòng)再執(zhí)行一次npm run dev
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)json數(shù)組分組合并操作示例
這篇文章主要介紹了js實(shí)現(xiàn)json數(shù)組分組合并操作,涉及javascript針對json數(shù)組的遍歷、判斷、添加、賦值等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02淺析Javascript中雙等號(hào)(==)隱性轉(zhuǎn)換機(jī)制
這篇文章給大家詳細(xì)介紹了javascript中雙等號(hào)(==)隱性轉(zhuǎn)換機(jī)制,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-10-10小程序自定義tabbar導(dǎo)航欄及動(dòng)態(tài)控制tabbar功能實(shí)現(xiàn)方法(uniapp)
在項(xiàng)目中遇到一個(gè)需求,根據(jù)不同的賬號(hào),生成不同的tabBar,下面這篇文章主要給大家介紹了關(guān)于小程序自定義tabbar導(dǎo)航欄及動(dòng)態(tài)控制tabbar功能實(shí)現(xiàn)方法(uniapp)的相關(guān)資料,需要的朋友可以參考下2022-12-12