Cookie是經過HTTP請求和響應頭在客戶端和服務器端傳遞的。數據庫
在Web開發中,使用session來完成會話跟蹤,session底層依賴Cookie技術。 django
---------------------設置Cookie-----------------
1 class HttpResponseBase: 3 def set_cookie(self, key, 鍵 4 value='', 值 5 max_age=None, 超長時間 6 cookie須要延續的時間(以秒爲單位) 7 若是參數是\ None`` ,這個cookie會延續到瀏覽器關閉爲止。 8 9 expires=None, 到期時間 10 expires默認None ,cookie失效的實際日期/時間。 11 12 13 path='/', Cookie生效的路徑, 14 瀏覽器只會把cookie回傳給帶有該路徑的頁面,這樣能夠避免將 15 cookie傳給站點中的其餘的應用。 16 / 表示根路徑,特殊的:根路徑的cookie能夠被任何url的頁面訪問 17 18 domain=None, Cookie生效的域名 19 20 你可用這個參數來構造一個跨站cookie。 21 如, domain=".example.com" 22 所構造的cookie對下面這些站點都是可讀的: 23 www.example.com 、 www2.example.com 24 和an.other.sub.domain.example.com 。 25 若是該參數設置爲 None ,cookie只能由設置它的站點讀取。 26 27 secure=False, 若是設置爲 True ,瀏覽器將經過HTTPS來回傳cookie。 28 httponly=False 只能http協議傳輸,沒法被JavaScript獲取 29 (不是絕對,底層抓包能夠獲取到也能夠被覆蓋) 30 ): pass
def set_signed_cookie(self, key, value, salt='', **kwargs):
-------------獲取值--------------------
1 request.COOKIES.get("key")
1 request.get_signed_cookie(key, default="默認值", salt='', max_age=None)
------------刪除cookie-------------------
1 response.delete_cookie("cookie_key",path="/",domain=name)
session瀏覽器
1 # 獲取、設置、刪除Session中數據 2 request.session['k1'] 3 request.session.get('k1',None) 4 request.session['k1'] = 123 5 request.session.setdefault('k1',123) # 存在則不設置 6 del request.session['k1'] 7 8 9 # 全部 鍵、值、鍵值對 10 request.session.keys() 11 request.session.values() 12 request.session.items() 13 request.session.iterkeys() 14 request.session.itervalues() 15 request.session.iteritems() 16 17 # 會話session的key 18 request.session.session_key 19 20 # 將全部Session失效日期小於當前日期的數據刪除 21 request.session.clear_expired() 22 23 # 檢查會話session的key在數據庫中是否存在 24 request.session.exists("session_key") 25 26 # 刪除當前會話的全部Session數據 27 request.session.delete() 28 29 # 刪除當前的會話數據並刪除會話的Cookie。 30 request.session.flush() 31 這用於確保前面的會話數據不能夠再次被用戶的瀏覽器訪問 32 例如,django.contrib.auth.logout() 函數中就會調用它。 33 34 # 設置會話Session和Cookie的超時時間 35 request.session.set_expiry(value) 36 * 若是value是個整數,session會在些秒數後失效。 37 * 若是value是個datatime或timedelta,session就會在這個時間後失效。 38 * 若是value是0,用戶關閉瀏覽器session就會失效。 39 * 若是value是None,session會依賴全局session失效策略。
1 1. 數據庫Session 2 SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默認) 3 4 2. 緩存Session 5 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 6 SESSION_CACHE_ALIAS = 'default' # 使用的緩存別名(默認內存緩存,也能夠是memcache),此處別名依賴緩存的設置 7 8 3. 文件Session 9 SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 10 SESSION_FILE_PATH = None # 緩存文件路徑,若是爲None,則使用tempfile模塊獲取一個臨時地址tempfile.gettempdir() 11 12 4. 緩存+數據庫 13 SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎 14 15 5. 加密Cookie Session 16 SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎 17 18 其餘公用設置項: 19 SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在瀏覽器上時的key,即:sessionid=隨機字符串(默認) 20 SESSION_COOKIE_PATH = "/" # Session的cookie保存的路徑(默認) 21 SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默認) 22 SESSION_COOKIE_SECURE = False # 是否Https傳輸cookie(默認) 23 SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http傳輸(默認) 24 SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默認) 25 SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否關閉瀏覽器使得Session過時(默認) 26 SESSION_SAVE_EVERY_REQUEST = False # 是否每次請求都保存Session,默認修改以後才保存(默認)