Django 中的 COOKie 理解與常用操作

2021-08-21 20:34:45 字數 1814 閱讀 6031

理解

web 伺服器收到請求後會返回所請求頁面的內容。除了內容之外,還會返回一些 cookie。cookie可以理解為伺服器發給客戶端的少量資訊。準備傳送請求時,客戶端檢查有沒有與伺服器位址匹配的 cookie,如果有,隨請求一起傳送。伺服器收到請求後把 cookie 放在請求的上下文中解釋,然後生成合適的響應。

以使用使用者名稱和密碼登入**為例。通過身份驗證後,伺服器可能會把乙個包含使用者名稱的 cookie發給瀏覽器,指明那個使用者已經登入**。隨後的請求會連同這個資訊一起發給伺服器,從而渲染針對已登入使用者的頁面,例如在頁面的某個位置顯示使用者名稱。然而,會話不是永久的,因為cookie 不會一直存在,而會在某一時刻過期。涉及敏感資訊的 web 應用可能會在幾分鐘之後就讓cookie 過期。要求沒這麼嚴格的 web 應用可能會在半小時之後,甚至幾周之後讓 cookie 過期。

常用操作

檢查cookies是否存在:

request.cookies.has_key('')
獲取cookies:

request.cookies.get('')
設定cookies:

response.set_cookie('', value)
刪除cookies:

response.delete_cookie('')
cookie 注意點

在 django 應用中使用 cookie 時要注意以下幾點:

❏ 首先,確定你的 web 應用需要哪種 cookie。你想儲存的資訊需要在瀏覽器關閉後留存嗎,

能在會話結束後棄之不用嗎?

❏ 審慎決定要在 cookie 中儲存哪些資訊。記住,cookie 中的資訊儲存在客戶端電腦中,這隱

藏著巨大的安全隱患,畢竟你對使用者電腦的安全保護措施一無所知。涉及敏感資訊時,應

該考慮使用伺服器端會話。

❏ 使用者可能會把瀏覽器的安全設定設為較高的級別,禁止使用 cookie,從而導致**的功能

失效。一定要考慮這種情況,因為你對使用者的瀏覽器設定沒有控制權。

如果決定使用客戶端 cookie,遵照下述步驟操作:

➊ 必須先檢查想使用的 cookie 是否存在。request.cookies.has_key(『』)函式返

回乙個布林值,指明名為 的 cookie 是否存在於客戶端電腦中。

➋ 如果目標 cookie 存在,便可以讀取其值:request.cookies。cookies屬性的值是個字典,因此想讀取 cookie 時,把 cookie 的名稱(字串形式)傳入方括號中。記住,cookie的值始終為字串,不管儲存的值是什麼語義。因此,要做好轉換型別的準備(例如使用int()或 float())。

➌ 如果目標 cookie 不存在,或者想更新 cookie,把想儲存的值傳給生成的響應。要呼叫的函式是 response.set_cookie(『』, value),第乙個引數是 cookie 的名稱,第二個引數是要設定的值。

如果對安全要求更高,應該使用基於會話的 cookie。

➊ 首先,確保 django 專案的 settings.py 模組中的 middleware_classes列表裡有django.contrib.sessions.middleware.sessionmiddleware。如果沒有,自行加上。

➋ 使用 session_engine配置會話後端。不同的後端配置參見 django 文件。

➌ 通過 requests.sessions.get()檢查 cookie 是否存在。

➍ 通過會話字典更新或設定 cookie:requests.session[『』]

Django中cookie的使用

0 會話跟蹤,會話保持 1 cookie規範 cookie大小上限為4kb 乙個伺服器最多在客戶端瀏覽器上儲存20個cookie 乙個瀏覽器最多儲存300個cookie 2 django中操作cookie 增 obj.set cookie key value 刪 obj.delete cookie ...

Django中的Cookie 實現登入

django cookie cookie 是什麼 儲存在瀏覽器端的鍵值對,讓伺服器提取有用的資訊。為什麼要有 cookie 因為http請求是無狀態的。無狀態的意思是每次請求都是獨立的,它的執 況和結果與前面的請求和之後的請求都無直接關係,它不會受前面的請求響應情況直接影響,也不會直接影響後面的請求...

瀏覽器cookie中SameSite的理解

瀏覽器中的cookie資訊,可以用於儲存使用者登入某個站點的資訊儲存,保持其使用者驗證的狀態。但是cookie又是每次隨著請求會自動傳送到伺服器去的,這就給了其他站點發起csrf攻擊和使用者追蹤的機會。於是就有了cookie的samesite屬性,用於限制第三方 的cookie傳送機制,具體如下 最...