-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
如何實(shí)現(xiàn)前后端分離(如何實(shí)現(xiàn)前后端分離vue)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于如何實(shí)現(xiàn)前后端分離的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、前后端分離的項(xiàng)目如何實(shí)現(xiàn)登錄狀態(tài)的保持。
前后端分離的項(xiàng)目一般會(huì)使用token實(shí)現(xiàn)登錄狀態(tài)的保持。 token其實(shí)就是一個(gè)隨機(jī)字符串,當(dāng)用戶在登錄頁(yè)面輸入賬號(hào)和密碼后,前端將賬號(hào)密碼發(fā)送給后端,后端檢驗(yàn)完賬號(hào)和密碼后,會(huì)生成一個(gè)隨機(jī)不重復(fù)的字符串即(token),并將其響應(yīng)給前端,前端拿到token后,需要在客戶端進(jìn)行持久化存儲(chǔ)(一般會(huì)寫在localStorage或者sessionStorage中,如果是SPA會(huì)存儲(chǔ)在sessionStorage中,如果是MPA則存儲(chǔ)在localStorage中),那么下次在向后端數(shù)據(jù)接口發(fā)送請(qǐng)求的時(shí)候,一般需要將token一并發(fā)送給后端數(shù)據(jù)接口,后端數(shù)據(jù)接口會(huì)對(duì)token進(jìn)行校驗(yàn),如果合法則正常響應(yīng)請(qǐng)求,如果不合法,則提示未登錄。 前端則根據(jù)本地存儲(chǔ)中是否存在token判斷用戶是否處于登錄狀態(tài)。
二、基于Docker-Compose 部署前后端分離單體項(xiàng)目(一)
1.單體項(xiàng)目是否需要采用docker進(jìn)行部署?
2.如果采用docker部署是否有必要采用docker-compose進(jìn)行服務(wù)編排?
答案是也許有必要,也許沒(méi)必要,docker的優(yōu)勢(shì)很多,但是對(duì)于垂直架構(gòu)的項(xiàng)目?jī)?yōu)勢(shì)未必那么明顯,總之一句你需要根據(jù)自己的項(xiàng)目情況去考慮。筆者之所以會(huì)寫這篇文章,大概率是基于省事的目的去部署一些小的項(xiàng)目。同時(shí)也是提供一種前后端分離的項(xiàng)目的部署方案(但絕對(duì)不是最有方案),以及在這種模式下的docker如何去工作才能達(dá)到我們的目的。
然而最終的目的是為了偷懶,省事。讓前后端分離項(xiàng)目的部署方式變的簡(jiǎn)單。就也許在這種模式下,你只需要5分鐘就可以實(shí)現(xiàn)部署,或許吧,不妨把這個(gè)當(dāng)作一個(gè)目標(biāo)。
本文目標(biāo):
上圖將部署流程分為三部分,本地開(kāi)發(fā)環(huán)境,阿里云容器鏡像服務(wù),以及l(fā)inux服務(wù)器。下面分成三個(gè)部分對(duì)上圖進(jìn)行說(shuō)明,工欲善其事,必先利其器。先進(jìn)行說(shuō)明,后面才能對(duì)每部分做的工作比較清晰。
本地開(kāi)發(fā)環(huán)境分成三個(gè)項(xiàng)目
先解釋一下圖中的相關(guān)名詞
容器鏡像服務(wù),分門別類的存儲(chǔ)我們的鏡像 。這個(gè)是鏡像服務(wù)的唯一用途,就相當(dāng)于maven的倉(cāng)庫(kù)是一樣的。
我們也可以搭建自己的私服倉(cāng)庫(kù),例如開(kāi)源的harbor等,都非常好用,在企業(yè)中用私服會(huì)比較多。
首先我們需要在linux服務(wù)器上搭建Docker環(huán)境,也就是我們?cè)趌inux上有一個(gè)docker。再將我們的鏡像運(yùn)行在docker上。
從上圖我們發(fā)現(xiàn)在docker上運(yùn)行這很多容器,mysql,redis,nginx,pitaya-java,pitaya-admin,pitaya-h5.
然而我們的容器是需要通信的,例如:大家都知道pitaya-java是一個(gè)springboot的項(xiàng)目,他需要訪問(wèn)mysql進(jìn)行數(shù)據(jù)存儲(chǔ)服務(wù),需要訪問(wèn)redis緩存我們的令牌信息等。
也就是說(shuō),我們運(yùn)行的這些容器之間是要相互能通信的。所以我們?cè)赿ocker上創(chuàng)建了一個(gè)內(nèi)部網(wǎng)絡(luò)叫做pitaya-network,他在172.2.0.0這個(gè)網(wǎng)段,我們需要我們的容器都加入pitaya-network這個(gè)網(wǎng)絡(luò),并且分配固定的IP地址,指定固定端口。
為什么需要分配固定IP地址,指定固定端口? 因?yàn)槲覀兊娜萜饕部赡軙?huì)和服務(wù)器一樣,會(huì)掛掉,如果隨機(jī)分配的話,創(chuàng)建新的容器,IP地址可能會(huì)變,我們?nèi)萜鏖g不能通信,例如java服務(wù)訪問(wèn)不了mysql,這樣我們的線上就無(wú)法提供客戶正常服務(wù)了。
本文我們做一個(gè)大概的概述,針對(duì)上面的結(jié)構(gòu)以下問(wèn)題是我們急需解決的?
其實(shí)針對(duì)java項(xiàng)目和vue項(xiàng)目制作鏡像方式不同,但是原理一樣,原理無(wú)非就是基于docker build這個(gè)命令制作鏡像,但是java的鏡像制作和推送可能更加簡(jiǎn)單,只需要一條命令即可,因?yàn)閙aven提供了制作鏡像的插件。這些內(nèi)容在下一篇文章都會(huì)涉及到!
想要表達(dá)清楚一鍵事情是非常不容易的事情,特別是通過(guò)文字,既不想廢話連篇,又想表達(dá)清楚真的很難,因?yàn)榧?xì)節(jié)比較多!然而我覺(jué)得弄清楚大方向是非常必要的,然后再進(jìn)行分解,希望能說(shuō)的明白,我會(huì)加油的,如果寫的不好也希望大家原諒!
三、jQuery如何實(shí)現(xiàn)類似JSTL的功能進(jìn)行前后端分離?
前后端分離一般用json交互,不用el表達(dá)式(依賴頁(yè)面,過(guò)于耦合)。
還有html不解析el表達(dá)式。換成jsp頁(yè)面導(dǎo)入jstl標(biāo)簽庫(kù)。
四、前后端分離-跨域會(huì)話如何保持?
因?yàn)镃ORS的出現(xiàn),大大降低了跨域的難度,另到AJAX有了更大的發(fā)揮空間,也導(dǎo)致了前后端更加容易實(shí)現(xiàn)。但是今天在實(shí)現(xiàn)前后端的時(shí)候發(fā)現(xiàn)了一個(gè)問(wèn)題。 在進(jìn)行session會(huì)話管理的時(shí)候,前端無(wú)法發(fā)送cookie到后端,前端每次訪問(wèn)后端都相當(dāng)于一次新的會(huì)話,這樣就導(dǎo)致登錄后的信息是無(wú)法保存的。客戶端每一次訪問(wèn)都需要重新登錄。
對(duì)于前端來(lái)說(shuō),seesion字段是存在cookie中的。在跨域過(guò)程中,Cookie是默認(rèn)不發(fā)送的。就算后端返回set-Cookie字段,前端也不會(huì)保存Cookie,更不會(huì)在下一次訪問(wèn)的時(shí)候發(fā)送到后端了。
因此只要前端可以把cookie發(fā)送到后端,后端就可以根據(jù)cookie拿到seeion字段進(jìn)行會(huì)話驗(yàn)證。
進(jìn)過(guò)重新對(duì)CORS的學(xué)習(xí),只要通過(guò)3步,就可以讓會(huì)話保持。
在ajax中設(shè)置,withCredentials: true。
例如:
服務(wù)端的 Access-Control-Allow-Origin 不可以設(shè)置為"*",必須指定明確的、與請(qǐng)求網(wǎng)頁(yè)一致的域名
服務(wù)端的 Access-Control-Allow-Credentials: true ,代表服務(wù)器接受Cookie和HTTP認(rèn)證信息。因?yàn)樵贑ORS下,是默認(rèn)不接受的。
PS:
web.xml
以上就是關(guān)于如何實(shí)現(xiàn)前后端分離相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
如何在小紅書(shū)評(píng)論掛鏈接(小紅書(shū)評(píng)論怎么發(fā)鏈接)
如何做營(yíng)銷運(yùn)營(yíng)外包團(tuán)隊(duì)(如何做營(yíng)銷運(yùn)營(yíng)外包團(tuán)隊(duì))
如何在小紅書(shū)賣東西(如何在小紅書(shū)賣東西的-)
校園景觀設(shè)計(jì)展板(校園景觀設(shè)計(jì)展板圖片)
一套完整的vi設(shè)計(jì)包括哪些內(nèi)容_1
問(wèn)大家
平面設(shè)計(jì)學(xué)會(huì)能做什么工作?前景如何?
抖音在加拿大可以直播嗎?加拿大利如何開(kāi)通抖音海外直播?
抖音如何開(kāi)通韓國(guó)直播權(quán)限?抖音怎么開(kāi)通韓國(guó)直播權(quán)限辦法
抖音海外直播權(quán)限解決方法,抖音如何開(kāi)通國(guó)外直播權(quán)限?
泉州網(wǎng)頁(yè)美工設(shè)計(jì)該如何選擇?諸位朋友們請(qǐng)回復(fù)下
在國(guó)外怎么做抖音直播?如何解決國(guó)外的直播權(quán)限?
寧波日?qǐng)?bào)登報(bào)電話多少如何登報(bào)辦理
抖音如何在國(guó)外直播?抖音為什么在國(guó)外不能直播?