您好,登錄后才能下訂單哦!
這篇文章主要講解了“django如何解決相同IP不同端口cookie和session沖突”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“django如何解決相同IP不同端口cookie和session沖突”吧!
本地測試使用同一源碼部署的2個站點,發現其cookie是公用的,會相互影響
站點A: http://127.0.0.1:8002/
站點B: http://127.0.0.1:8004/
1. 站點A登錄后,瀏覽器獲取sessionid
2. 站點B登錄后,瀏覽器獲取sessionid
站點A和B的sessionid值一樣
3. 站點A退出登錄,sessionid被清除
4. 在站點B刷新頁面,sessionid也消失
django默認的存儲賬號cookie的名稱為sessionid,只要將不同項目的cookie名稱設置不相同,即可避免cookie沖突。
修改方法是在setting.py 中添加cookie自定義名稱設置,例SESSION_COOKIE_NAME = "session" # 名稱可按需修改
1. 站點A設置SESSION_COOKIE_NAME="sessionid"并登錄,Cookies中新增sessionid
2. 站點B設置SESSION_COOKIE_NAME="sessionid_zy"并登錄,Cookies中新增sessionid_key
3. 兩個站點都執行刷新操作,發現各自Cookies都有兩個參數,在站點A打開其他網址,在請求頭Cookie會把2個參數都發送給服務器,
服務器獲取到全部參數后,會根據端口檢測sessonid參數是否存在,sessionid對應值是否跟數據庫值一致。(下圖為驗證通過)
一旦參數不存在或者值不一致,Django會清除服務器session數據,同時會跟瀏覽器交互清除Cookies的sessionid參數,隨后訪問站點A就要重新登錄。
在站點A的Cookies中,手動給sessionid增加1111,此時瀏覽器存儲的sessionid跟服務器存的值不一致
刷新頁面
此時服務器session驗證不通過,重定向至登錄頁(重定向邏輯是自行設計實現),并告知瀏覽器,瀏覽器將當前緩存sessionid清理掉。
由于站點B的cookie名是sessionid_zy,因此站點B仍可以正常使用。
感謝各位的閱讀,以上就是“django如何解決相同IP不同端口cookie和session沖突”的內容了,經過本文的學習后,相信大家對django如何解決相同IP不同端口cookie和session沖突這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。