webpack配置接口地址代理css
在項目開發中,接口聯調的時候通常都是同域名下,且不存在跨域的狀況下進行接口聯調,可是當咱們在本地啓動服務器後,好比本地開發服務下是 http://localhost:8080 這樣的訪問連接,可是咱們的接口地址是 www.xxx.com/save/post 這樣的,咱們這樣直接使用就會存在跨域的請求,致使接口請求不成功。html
配置:前端
咱們打開下面路徑的文件vue
config/index.jsnode
在其中的 dev 對象裏面找到: proxyTable: {}webpack
這裏就是配置代理的地方,咱們進行以下設置:web
`module.exports = {`
`// ...`
`dev: {`
`// 代理配置表,在這裏能夠配置特定的請求代理到對應的API接口`
`proxyTable: {`
`'/api'``: {`
`target:` `'[http://www.xxx.com](http://www.xxx.com/)'``, // 你接口的域名`
`secure:` `false``,` `// 若是是https接口,須要配置這個參數爲true`
`changeOrigin:` `true``,` `// 若是接口跨域,須要進行這個參數配置爲true`
`}`
`},`
`}`
`}`
複製代碼
接口地址本來是 /save/post ,可是爲了匹配代理地址,在前面加一個 /api , 所以接口地址須要寫成這樣的便可生效 /api/save/post 。面試
即:前端本地啓動接口爲:http://localhost:8080/api/save/post,轉發的代理接口爲:www.xxx.com/api/save/po…,其中的/api爲匹配項。後端
/api 是本地路徑和後端接口路徑的匹配前綴,若後端接口給了/api這個前綴,可用上面的寫法。api
若後端前綴不統一,則可繼續添加,寫法以下:
`module.exports = {`
`// ...`
`dev: {`
`// 代理配置表,在這裏能夠配置特定的請求代理到對應的API接口`
`proxyTable: {`
`'/api'``: {`
`target:` `'[http://www.xxx.com](http://www.xxx.com/)'``, // 你接口的域名`
`secure:` `false``,` `// 若是是https接口,須要配置這個參數爲true`
`changeOrigin:` `true``,` `// 若是接口跨域,須要進行這個參數配置爲true`
`},`
`'/api'``: {`
`target:` `'[http://www.xxx.com](http://www.xxx.com/)'``, // 你接口的域名`
`secure:` `false``,` `// 若是是https接口,須要配置這個參數爲true`
`changeOrigin:` `true``,` `// 若是接口跨域,須要進行這個參數配置爲true`
`}`
`},`
`}`
`}`
複製代碼
那麼還有一種狀況,是後端的接口沒有咱們想要的匹配項(前綴)'/api',是直接的www.xxx.com/save/post,這樣的接口,咱們就要用到pathRewrite來重寫地址,將本地路徑上的帶匹配前綴的路徑:http://localhost:8080/api/save/post上的前綴'/api'轉成 ‘ / '。如下第一種是網絡上大部分推薦的,可是我親測是無效的,估計他們多數用的上面的方法,沒有實際使用下面的方法,LZ用如下第一種方法折騰了2天無果,後去看了webpack-dev-server的issue,無心義試通了接口,即下面第二種方法,固然也不排除第一種方法是個人版本問題而沒有效果,因此若是你們試了第一種方法有效就當個人方法沒說,若是無效,不妨試試個人第二種方法:
第一種方法(網上寫的方法)
`module.exports = {`
`// ...`
`dev: {`
`// 代理配置表,在這裏能夠配置特定的請求代理到對應的API接口`
`proxyTable: {`
`'/api'``: {`
`target:` `'[http://www.xxx.com](http://www.xxx.com/)'``, // 你接口的域名`
`secure:` `false``,` `// 若是是https接口,須要配置這個參數爲true`
`changeOrigin:` `true``,` `// 若是接口跨域,須要進行這個參數配置爲true`
`pathRewrite: {`
`'^/api'``:` `'/'`
`}`
`}`
`},`
`}`
`}`
複製代碼
第二種方法(親測有效的方法)
`module.exports = {`
`// ...`
`dev: {`
`// 代理配置表,在這裏能夠配置特定的請求代理到對應的API接口`
`proxyTable: {`
`'/api/*'``:{`
`target:` `"[http://XXX.XXX.com](http://xxx.xxx.com/)"``,`
`changeOrigin:` `true``,`
`pathRewrite: {``'/api'``:``'/'``}`
`}`
`},`
`}`
`}`
複製代碼
即將上面的匹配項從 ‘/api' 改爲了 '/api/*',至於爲何,我表示也沒有搞明白,不過確實調通了代理,但願對你們有幫助
本次給你們推薦一個交流圈,裏面歸納移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同窗,歡迎加入:582735936,無論你是小白仍是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時天天更新視頻資料。
最後,祝你們早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峯。