Cookie 作用,互動過程解析,設定,獲取,刪除,生效時間的設定

csdn*發表於2018-10-16

Cookie的作用:

對於Cookie的定義:為了辨別使用者身份,進行的會話追蹤而儲存在使用者本地的資料。
Cookie的一個作用,就是進行狀態保持;比如我們們在瀏覽淘寶網時,如果伺服器和瀏覽器是一種無狀態的形式,那麼你每次登陸完淘寶網,再次重新整理或者進入其他頁面時,登陸資訊就會丟失,需要重新進行登陸。也就是說,預設狀態下,當使用者在一次請求時,瀏覽器和伺服器並不知道在這次請求之前這個使用者進行過什麼操作。
為了解決上面的無狀態情形,就需要進行狀態保持,那麼狀態保持在Flask中有兩種方式:

  • 在客戶端儲存資訊:cookie
  • 在伺服器儲存資訊:session

Cookie的互動流程:

下面以使用者登陸某個網站為例:
①:瀏覽器會傳送請求登陸的報文
②:伺服器接收到登入名和登陸密碼之後,在判斷無誤之後,會生成cookie;在生成cookie之後,會和響應報文一起返回給瀏覽器。

生成cookie的程式碼如下(在響應中生成cookie),response.set_cookie(’鍵‘,’值‘)

# 需要匯入 from flask import make_response
@app.route('/login')
def login():
    response = make_response('success')
    response.set_cookie('user_id', '11')
    response.set_cookie('user_pwd', '123456')
    return response

③瀏覽器接收到cookie後,會將cookie儲存在瀏覽器本地;
在執行後,我們可以查詢瀏覽器此時存在的cookie,如下圖
在這裡插入圖片描述

④:瀏覽器再次請求時,會把這個cookie裡面的內容帶上,傳送給伺服器:
獲取cookie的程式碼如下(cookie的獲取在請求中獲取),瀏覽器在訪問伺服器時,會將本網站下所有Cookie資訊提交給伺服器,所以在request中可以讀取Cookie資訊;方法:request.cookies.get(鍵)

# 需要匯入 from flask import request
# 能獲取到的前提是,在獲取之前已經生成了cookie,且沒有被刪除
@app.route('/')
def index():
    user_id = request.cookies.get('user_id')
    user_pwd = request.cookies.get('user_pwd')
    return '%s:%s' % (user_id, user_pwd)

cookie生效時間的設定:
在set_cookie中加入【max_age=時間數值 】的引數即可,程式碼如下:

@app.route('/login')
def login():
    response = make_response('success')
    response.set_cookie('user_id', '11', max_age=60)
    response.set_cookie('user_pwd', '123456', max_age=60)
    return response

cookie的刪除:
刪除也是在響應中設定的,使用 delete_cookie(鍵)

@app.route('/logout')
def logout():
    response = make_response('success')
    response.delete_cookie('user_id')
    response.delete_cookie('user_pwd')
    return response

cookie的刪除,如下圖所示:
當再次進入介面時,cookie的數量就會顯示為0 :
在這裡插入圖片描述

提示:

  • Cookie基於域名安全,不同域名的Cookie是不能互相訪問的
  1. 比如:在訪問taobao.com時向瀏覽器中寫了Cookie資訊,使用同一瀏覽器訪問baidu.com時,無法訪問到taobao.com寫的Cookie資訊;
  2. 瀏覽器的同源策略

Cookie互動過程的圖文解析:

在這裡插入圖片描述

相關文章