{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

PHP與NodeJS如何共用Session?

dreamGongdreamGong 回答1 收藏1
收藏問題

1條回答

dongxiawu

dongxiawu

回答于2022-06-22 19:22

隨著項目的發(fā)展,技術(shù)架構(gòu)方案也是會慢慢演變的。比如說淘寶最早期是由單純的PHP開發(fā)的站點(diǎn),到現(xiàn)在單一架構(gòu)模式已滿足不了其發(fā)展需要,于是乎演變成了異構(gòu)模式(即:多種技術(shù)的混合架構(gòu)模式)。

現(xiàn)在市面上的開發(fā)語言眾多,同一個產(chǎn)品線的多個子項目采用不同的編程語言開發(fā)也是很常見的。但對于不同語言開發(fā)的站點(diǎn)默認(rèn)情況下Session是無法共用的,那么在異構(gòu)模式下如何實現(xiàn)Session互通呢?下面給大家具體分析一下。

Session運(yùn)行原理

要想弄清楚不同語言間的Session互通問題,我們就要先了解Session的實現(xiàn)機(jī)制原理是什么。

大家都知道,HTTP協(xié)議本身是無狀態(tài)的,客戶端每次發(fā)出的請求在服務(wù)器端看來都是獨(dú)立的,服務(wù)器端也無法得知哪些請求是同一個用戶發(fā)出的。在這種機(jī)制下,有些需要狀態(tài)保持的場景(如登錄)就存在一些問題,于是就有了Cookie和Session。

舉個例子來幫助大家理解一下:

因為HTTP協(xié)議無狀態(tài)的特性,如果服務(wù)器端要辨識用戶請求就需要給用戶發(fā)一個“通行證”,拿到通行證的用戶每次請求服務(wù)器時都會把這個通行證帶上,這樣一來服務(wù)器就知道拿著這個通行證的用戶發(fā)出了哪些請求。那服務(wù)器是不是看到用戶的“通行證”就直接放行呢?自然不是,對于某些操作,服務(wù)器端也要驗證用戶的“通行證”是否和服務(wù)器端存儲的“用戶檔案”對得上。在這里,服務(wù)器端存儲的用戶檔案就是Session,檔案上的用戶唯一編號就是SessionID,用戶的唯一編號也會作為用戶“通行證”的一部分發(fā)放給用戶存儲(存儲在瀏覽器Cookie中)。

總結(jié)來說,Cookie是為了解決HTTP協(xié)議無狀態(tài)的缺陷而推出的,而Session是一種在客戶端和服務(wù)器端保持狀態(tài)的解決方案。

PHP與Node.js如何實現(xiàn)Session共用?

在這種異構(gòu)模式下要實現(xiàn)Session共用,那就需要保證各自的SessionID是共用的,所以我給的解決方案如下:

1、PHP與Node.js客戶端要保證存儲SessionID的Cookie Name一致,如果Cookie的名稱不統(tǒng)一也沒關(guān)系,但要保證對于同一個客戶的SessionID要一致

2、服務(wù)器端的Session要集中到一處管理,這樣PHP和Node.js都能獲取到Session。比如說可以把Session存儲在數(shù)據(jù)庫中或者Redis中。

3、如果給Cookie作了加密,那要保證PHP與Node.js兩端的加解密規(guī)則一致。

以上就是我的觀點(diǎn),對于這個問題大家是怎么看待的呢?歡迎在下方評論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗,歡迎關(guān)注我了解更多科技知識!

評論0 贊同0
  •  加載中...

相關(guān)問題

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<