這篇文章主要講解了“django如何解決相同IP不同端口cookie和session沖突”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“django如何解決相同IP不同端口cookie和session沖突”吧!
10年積累的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有西夏免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
本地測試使用同一源碼部署的2個(gè)站點(diǎn),發(fā)現(xiàn)其cookie是公用的,會相互影響
站點(diǎn)A: http://127.0.0.1:8002/
站點(diǎn)B: http://127.0.0.1:8004/
1. 站點(diǎn)A登錄后,瀏覽器獲取sessionid
2. 站點(diǎn)B登錄后,瀏覽器獲取sessionid
站點(diǎn)A和B的sessionid值一樣
3. 站點(diǎn)A退出登錄,sessionid被清除
4. 在站點(diǎn)B刷新頁面,sessionid也消失
django默認(rèn)的存儲賬號cookie的名稱為sessionid,只要將不同項(xiàng)目的cookie名稱設(shè)置不相同,即可避免cookie沖突。
修改方法是在setting.py 中添加cookie自定義名稱設(shè)置,例SESSION_COOKIE_NAME = "session" # 名稱可按需修改
1. 站點(diǎn)A設(shè)置SESSION_COOKIE_NAME="sessionid"并登錄,Cookies中新增sessionid
2. 站點(diǎn)B設(shè)置SESSION_COOKIE_NAME="sessionid_zy"并登錄,Cookies中新增sessionid_key
3. 兩個(gè)站點(diǎn)都執(zhí)行刷新操作,發(fā)現(xiàn)各自Cookies都有兩個(gè)參數(shù),在站點(diǎn)A打開其他網(wǎng)址,在請求頭Cookie會把2個(gè)參數(shù)都發(fā)送給服務(wù)器,
服務(wù)器獲取到全部參數(shù)后,會根據(jù)端口檢測sessonid參數(shù)是否存在,sessionid對應(yīng)值是否跟數(shù)據(jù)庫值一致。(下圖為驗(yàn)證通過)
一旦參數(shù)不存在或者值不一致,Django會清除服務(wù)器session數(shù)據(jù),同時(shí)會跟瀏覽器交互清除Cookies的sessionid參數(shù),隨后訪問站點(diǎn)A就要重新登錄。
在站點(diǎn)A的Cookies中,手動(dòng)給sessionid增加1111,此時(shí)瀏覽器存儲的sessionid跟服務(wù)器存的值不一致
刷新頁面
此時(shí)服務(wù)器session驗(yàn)證不通過,重定向至登錄頁(重定向邏輯是自行設(shè)計(jì)實(shí)現(xiàn)),并告知瀏覽器,瀏覽器將當(dāng)前緩存sessionid清理掉。
由于站點(diǎn)B的cookie名是sessionid_zy,因此站點(diǎn)B仍可以正常使用。
感謝各位的閱讀,以上就是“django如何解決相同IP不同端口cookie和session沖突”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對django如何解決相同IP不同端口cookie和session沖突這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!