詳解webpack的proxyTable無效的解決方案
最近遇到這個需要單頁訪問跨域后臺的問題。
可以按照如下設(shè)置:
proxyTable: { '/list': { target: 'http://api.xxxxxxxx.com', pathRewrite: { '^/list': '/list' } } }
這樣我們在寫url的時候,只用寫成/list/1就可以代表api.xxxxxxxx.com/list/1.
那么又是如何解決跨域問題的呢?其實在上面的'list'的參數(shù)里有一個changeOrigin參數(shù),接收一個布爾值,如果設(shè)置為true,那么本地會虛擬一個服務(wù)端接收你的請求并代你發(fā)送該請求,這樣就不會有跨域問題了,當(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配置的地址能訪問,因為如果不能訪問,在瀏覽器F12調(diào)試的時候看到的依然會是提示404。
并且注意,在F12看到的js提示錯誤的域名,是js寫的那個域名,并不是代理后的域名。
另外配置正常的話,在idea的控制臺,會有錯誤提示顯示,例如:
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.(奇葩解決)個人感覺這個http代理的插件有緩存,proxyTable
的修改會無效,這時候可以嘗試修改啟動項目的端口,就在proxyTable
屬性配置的下面幾行有個port: 8080
,改成其他,例如8081
,就會有效,然后再改回來就好。
3.這個比較多人說了,就是要手動再執(zhí)行一次npm run dev
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺析Javascript中雙等號(==)隱性轉(zhuǎn)換機(jī)制
這篇文章給大家詳細(xì)介紹了javascript中雙等號(==)隱性轉(zhuǎn)換機(jī)制,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-10-10小程序自定義tabbar導(dǎo)航欄及動態(tài)控制tabbar功能實現(xiàn)方法(uniapp)
在項目中遇到一個需求,根據(jù)不同的賬號,生成不同的tabBar,下面這篇文章主要給大家介紹了關(guān)于小程序自定義tabbar導(dǎo)航欄及動態(tài)控制tabbar功能實現(xiàn)方法(uniapp)的相關(guān)資料,需要的朋友可以參考下2022-12-12