前端vue打包項(xiàng)目,如何解決跨域問(wèn)題
vue打包項(xiàng)目解決跨域
前段時(shí)間做一個(gè)vue打包成安卓和IOS的App,遇到了跨域問(wèn)題,直接拿了之前項(xiàng)目的配置,卻不起作用。
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; ? @Configuration public class CorsConfig implements WebMvcConfigurer { ?? ? ? ? @Override ? ? public void addCorsMappings(CorsRegistry registry) { ? ? ? ? registry.addMapping("/**") ? ? ? ? ? ? .allowedOrigins("*") ? ? ? ? ? ? .allowCredentials(true) ? ? ? ? ? ? .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") ? ? ? ? ? ? .maxAge(3600); ? ? } ? ?? }
但是還是不行,后面查明是因?yàn)橹绊?xiàng)目nginx和項(xiàng)目在一個(gè)服務(wù)器,而APP的前端是在移動(dòng)端的。解決方法有所不同,如下
import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; ? @Configuration public class LakeAppConfigurer extends WebMvcConfigurerAdapter { ? ? ? @Override ? ? public void addCorsMappings(CorsRegistry registry) { ? ? ? ? registry.addMapping("/**") ? ? ? ? ? ? ? ? .allowedOrigins("*") ? ? ? ? ? ? ? ? .allowCredentials(true) ? ? ? ? ? ? ? ? .allowedHeaders("*") ? ? ? ? ? ? ? ? .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS") ? ? ? ? ? ? ? ? .exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L) ? ? ? ? ? ? ? ? .maxAge(3600); ? ? } }
完美解決。
vue項(xiàng)目解決跨域(打包上線無(wú)需手動(dòng)切換url)
1、在目錄config下的index.js中設(shè)置代理;
proxyTable: { //設(shè)置代理 '/api': { //使用"/api"來(lái)代替跨域地址139.xxx.xx target: 'http://139.xxx.xx', //源地址 changeOrigin: true, //改變?cè)? pathRewrite: { //路徑重寫 '^/api': 'http://139.xxx.xx' } } },
2、分別配置開發(fā)環(huán)境和生產(chǎn)環(huán)境地址
在config目錄下dev.env.js中配置開發(fā)路徑:
module.exports = merge(prodEnv, { NODE_ENV: '"development"', API_HOST: '"/api"' // 配置代理路徑的符號(hào),增加的內(nèi)容 })
在config目錄下prod.env.js中配置開發(fā)路徑:
module.exports = { NODE_ENV: '"production"', API_HOST: '"http://139.xxx.xx"' // 生產(chǎn)環(huán)境地址,增加的內(nèi)容 }
3、在組建中進(jìn)行使用,這里使用vue-resource;
//process.env.API_HOST 獲取當(dāng)前環(huán)境的api地址 methods:{ getData: function(){ this.$http.get(process.env.API_HOST + '/AiaaScadaSys/MonitorDB/info').then((response)=>{ this.$data.data_jianhuyi = response.body[0]; console.log(this.data_jianhuyi); }, (response)=>{ return response.json(); }); }, }
小結(jié):經(jīng)過(guò)這樣的配置后可以比較完美的解決跨域的問(wèn)題而不用擔(dān)心在打包上線的時(shí)候還要手動(dòng)修改api地址,而且維護(hù)成本也低。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue解決跨域問(wèn)題的幾種常用方法(CORS)
- vue請(qǐng)求后端數(shù)據(jù)和跨域問(wèn)題解決
- vue項(xiàng)目配置代理如何解決跨域問(wèn)題
- vue跨域問(wèn)題:Access?to?XMLHttpRequest?at‘httplocalhost解決
- vue使用反向代理解決跨域問(wèn)題方案
- 解決Vue前后端跨域問(wèn)題的方式匯總
- vue3解決跨域問(wèn)題詳細(xì)代碼親測(cè)有效
- Vue項(xiàng)目中該如何解決跨域問(wèn)題
- vuecli3打包后出現(xiàn)跨域問(wèn)題,前端配置攔截器無(wú)效的解決
- Vue3設(shè)置Proxy代理解決跨域問(wèn)題
- VUE跨域問(wèn)題Access to XMLHttpRequest at
- Vue解決跨域問(wèn)題常見(jiàn)方法詳解
相關(guān)文章
解決IOS端微信H5頁(yè)面軟鍵盤彈起后頁(yè)面下方留白的問(wèn)題
微信H5項(xiàng)目,ios端出現(xiàn)了軟鍵盤輸完隱藏后頁(yè)面不會(huì)回彈,下方會(huì)有一大塊留白。這篇文章主要介紹了決微信H5頁(yè)面軟鍵盤彈起后頁(yè)面下方留白的問(wèn)題(iOS端) ,需要的朋友可以參考下2019-06-06Vue Elenent實(shí)現(xiàn)表格相同數(shù)據(jù)列合并
這篇文章主要為大家詳細(xì)介紹了Vue Elenent實(shí)現(xiàn)表格相同數(shù)據(jù)列合并,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11基于vue2.0+vuex+localStorage開發(fā)的本地記事本示例
這篇文章主要介紹了基于vue2.0+vuex+localStorage開發(fā)的本地記事本示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02使用Vue開發(fā)動(dòng)態(tài)刷新Echarts組件的教程詳解
這篇文章主要介紹了使用Vue開發(fā)動(dòng)態(tài)刷新Echarts組件的教程詳解,需要的朋友可以參考下2018-03-03