網(wǎng)站首頁 編程語言 正文
前序
1、cookie介紹
Cookie是一段不超過4KB的小型文本數(shù)據(jù),保存在客戶端瀏覽器中,由一個名稱(Name)、一個值(Value)和其它幾個用于控制Cookie有效期、安全性、使用范圍的可選屬性組成。其中 :
(1) Name/Value:設置Cookie的名稱及相對應的值,對于認證Cookie,Value值包括Web服務器所提供的訪問令牌。
(2) Expires屬性:設置Cookie的生存期。有兩種存儲類型的Cookie:會話性與持久性。Expires屬性缺省時,為會話性Cookie,僅保存在客戶端內(nèi)存中,并在用戶關閉瀏覽器時失效;持久性Cookie會保存在用戶的硬盤中,直至生存期到或用戶直接在網(wǎng)頁中單擊“注銷”等按鈕結束會話時才會失效 。
(3) Path屬性:定義了Web站點上可以訪問該Cookie的目錄 。
(4) Domain屬性:指定了可以訪問該 Cookie 的 Web 站點或域。
2、session介紹
Session:與cookie功能效果相同。Session與Cookie的區(qū)別在于Session是記錄在服務端的,而Cookie是記錄在客戶端的。
當訪問服務器否個網(wǎng)頁的時候,會在服務器端的內(nèi)存里開辟一塊內(nèi)存,這塊內(nèi)存就叫做session,而這個內(nèi)存是跟瀏覽器關聯(lián)在一起的。這個瀏覽器指的是瀏覽器窗口,或者是瀏覽器的子窗口,意思就是,只允許當前這個session對應的瀏覽器訪問,就算是在同一個機器上新啟的瀏覽器也是無法訪問的。而另外一個瀏覽器也需要記錄session的話,就會再啟一個屬于自己的session。
一、cookie學習
1、設置cookie
- 在服務器設置cookie需要導入make_response包
- response=make_response(‘hello world’) 括號這里傳入的值是在客戶端響應的內(nèi)容
- response.set_cookie(‘username’,‘mashibing’,max_age=3600) 第一個值是cookie名稱,第二個值cookie內(nèi)容,第三個值設置cookie的有效時間
- 這個有效時間在服務器沒有關閉的狀態(tài)下,有效時間內(nèi),即使你關閉了客戶端(瀏覽器),再次打開客戶端(瀏覽器)仍能訪問到。
from flask import *
app=Flask(__name__)
#設置cookie以及有效性期
@app.route('/cookie')
def set_cookiei():
response=make_response('hello world')
response.set_cookie('username','mashibing',max_age=3600)
return response
#讀取
@app.route('/get_cookie')
def get_cookie():
resp=request.cookies.get('username')
return resp
if __name__ == '__main__':
app.run()
2、客戶端(瀏覽器)
二、session學習
1、設置SECRET_KEY
- 這里SECRET_KEY的值是可以隨機設置,可以使用os.urandom(24) 隨機生成24位字符
- 此值 [ SECRET_KEY 設置]是保護簽名數(shù)據(jù)的關鍵 - 保持此安全至關重要,否則攻擊者可以使用它來生成自己的簽名值。
- 設置SECRET_KEY 配合加密算法生成sessionID
- PERMANENT_SESSION_LIFETIME=timedelta(minutes=30) 設置該sessionID在服務器存儲的時間,在有效時間內(nèi)客戶端(瀏覽器)關掉后再次重新訪問時,會對其session ID進行校驗,若是之前保存在服務器的session ID對應,則可以拿到之前session值。
class Df(object):
SECRET_KEY=os.urandom(24)
PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)
2、設置session
- 這里設置session值在客戶端是看不到的,相對安全,除非服務器崩了。
- 設置的session會保存在服務器。
- session.permanent=True #這行代碼也要寫不然前面定義的時間失效。
- 設置session是以鍵值對的形式。
@app.route('/test1')
def test1():
session.permanent=True #這行代碼也要寫不然前面定義的時間失效
#設置session
session['un']='ywx'
session['pwd']='123456'
return 'hello ywx'
3、獲取session值
通過session.get() 獲取定義的值
#讀取session
@app.route('/test2')
def test2():
un=session.get('un')
pwd=session.get('pwd')
print(un,pwd)
return '獲取session的值'
4、整體代碼展示
from flask import *
import os
from datetime import timedelta
app=Flask(__name__)
#設置SECRET_KEY
class Df(object):
SECRET_KEY=os.urandom(24)
PERMANENT_SESSION_LIFETIME=timedelta(minutes=30)
#導進來參數(shù)
app.config.from_object(Df)
@app.route('/test1')
def test1():
session.permanent=True #這行代碼也要寫不然前面定義的時間失效
#設置session
session['un']='ywx'
session['pwd']='123456'
return 'hello ywx'
#讀取session
@app.route('/test2')
def test2():
un=session.get('un')
pwd=session.get('pwd')
print(un,pwd)
return '獲取session的值'
if __name__ == '__main__':
app.run()
5、客戶端(瀏覽器)展示
原文鏈接:https://blog.csdn.net/Ywx_csdn/article/details/127195470
相關推薦
- 2022-04-06 python中matplotlib的顏色以及形狀實例詳解_python
- 2022-05-22 Nginx設置HTTPS的方法步驟_nginx
- 2023-11-23 nginx偽靜態(tài)try_files命令解讀
- 2022-11-19 Python?numpy?ndarray屬性,索引,切片_python
- 2022-08-20 Oracle刪除歸檔日志及添加定時任務_oracle
- 2022-08-13 windows上使用docker搭建kafka
- 2022-09-25 Linux基礎組件之死鎖檢測
- 2022-01-28 Mybatis技術內(nèi)幕-設計模式與應用場景總結
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支