這篇文章給大家分享的是有關(guān)vue項(xiàng)目打包后如何解決跨域的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)是專業(yè)的新河網(wǎng)站建設(shè)公司,新河接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新河網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
前言
在使用vue.js開發(fā)前端項(xiàng)目時(shí),再結(jié)合webpack搞起各種依賴、各種插件進(jìn)行開發(fā),無疑給前端開發(fā)帶來了很多便捷,就在解決跨域這個(gè)問題上,相信眾多用vue.js的前端同僚們同我一樣嘗到了甜頭,開發(fā)環(huán)境全靠proxyTable一通配置簡直不要太酸爽。還不明所以然的新手們可能還沒搞清我說的是什么,就是下面這幾行配置:
proxyTable: { '/api': { target: 'http://113.113.113.113:5000', //假的接口地址哈 changeOrigin: true, pathRewrite: { '^/api': '' } },
我們的跨域竟然就這樣完美的解決了,然后就開始愉快的請(qǐng)求后端的接口啦!!
回到正題
具體場(chǎng)景:公司的一個(gè)h6項(xiàng)目是部署在客戶端的,但是部署后出現(xiàn)bug了,由于多人協(xié)同開發(fā)且趕進(jìn)度竟然是打包后因?yàn)镃SS的問題多個(gè)頁面布局亂了,但是開發(fā)環(huán)境并沒有問題啊,怎么打完包樣式就亂了?那就打開dist下的index.html看看唄,復(fù)現(xiàn)一下bug,想都不用想,頁面沒數(shù)據(jù)怎么復(fù)現(xiàn),再去造一套假數(shù)據(jù)?作為一個(gè)不喜歡這樣折騰的人必然是不想做這種事情的。
就不勞煩后端了,咱自己解決!
nginx 還是要會(huì)一些些的,自己配置一下,分分鐘解決,哈哈!
server { listen 8082; server_name 127.0.0.1; //咱自己nginx服務(wù)器地址 #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } location /app-api { rewrite ^.+app-api/?(.*)$ /$1 break; include uwsgi_params; proxy_pass http://113.113.113.113:5001/; //后端接口地址 //關(guān)鍵部分start add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token'; //關(guān)鍵部分end //以下配置參見nginx配置文檔哈 #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Connection close; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
目的是把后端接口用 nginx 再代理一遍,咱自己用 nginx 間接允許一下跨域請(qǐng)求!
start nginx //在nginx目錄啟動(dòng)服務(wù)
通常我們會(huì)做一個(gè)統(tǒng)一的管理接口的js文件,如下形式
var BASE_URL = '/api'; var isPro = process.env.NODE_ENV === 'production' if(isPro){ BASE_URL= 'http://113.113.113.113:5000', //線上或者測(cè)試地址 //BASE_URL= 'http://127.0.0.1:8020', //nginx代理地址 //當(dāng)我們需要打包后依然能正常調(diào)接口的時(shí)候用這個(gè) } const UrlConfig = { getToken:BASE_URL + "某接口" } export default { UrlConfig };
至此,就把打包后接口跨域的問題優(yōu)雅的解決啦。
結(jié)語
因?yàn)楣镜那昂蠖隧?xiàng)目通常都放在同一臺(tái)服務(wù)器,或者不在同一臺(tái)服務(wù)器的時(shí)候跨域也是靠后端的同志們?nèi)ソ鉀Q的,所以很少在生產(chǎn)環(huán)境中靠前端解決跨域的這項(xiàng)需求。不過我分享的這個(gè)小技巧也只適用于以上類似場(chǎng)景中,歸根結(jié)底還是要在多人協(xié)同開發(fā)的過程中提前規(guī)劃好公共以及個(gè)人的編程規(guī)范,盡量保證開發(fā)環(huán)境和生產(chǎn)環(huán)境是一致的,就可以擺脫很多類似的問題。
Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以創(chuàng)建可維護(hù)性和可測(cè)試性更強(qiáng)的代碼庫,Vue允許可以將一個(gè)網(wǎng)頁分割成可復(fù)用的組件,每個(gè)組件都包含屬于自己的HTML、CSS、JavaScript,以用來渲染網(wǎng)頁中相應(yīng)的地方,所以越來越多的前端開發(fā)者使用vue。
感謝各位的閱讀!關(guān)于“vue項(xiàng)目打包后如何解決跨域”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!