最近遇到這個需要單頁訪問跨域后臺的問題。
可以按照如下設置:
proxyTable: {'/list': {target: 'http://api.xxxxxxxx.com',pathRewrite: {'^/list': '/list'}}}這樣我們在寫url的時候,只用寫成/list/1就可以代表api.xxxxxxxx.com/list/1.
那么又是如何解決跨域問題的呢?其實在上面的'list'的參數里有一個changeOrigin參數,接收一個布爾值,如果設置為true,那么本地會虛擬一個服務端接收你的請求并代你發送該請求,這樣就不會有跨域問題了,當然這只適用于開發環境。增加的代碼如下所示:
proxyTable: {'/list': {target: 'http://api.xxxxxxxx.com',changeOrigin: true,pathRewrite: {'^/list': '/list'}}}	遇到了網上很多人說的,proxyTable無論如何修改,都沒效果的現象。
經過幾輪測試,總結出一下幾種解決方案:
	1.(非常重要)確保proxyTable配置的地址能訪問,因為如果不能訪問,在瀏覽器F12調試的時候看到的依然會是提示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.這個比較多人說了,就是要手動再執行一次npm run dev
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答