網站首頁 編程語言 正文
前序
1、cookie介紹
Cookie是一段不超過4KB的小型文本數據,保存在客戶端瀏覽器中,由一個名稱(Name)、一個值(Value)和其它幾個用于控制Cookie有效期、安全性、使用范圍的可選屬性組成。其中 :
(1) Name/Value:設置Cookie的名稱及相對應的值,對于認證Cookie,Value值包括Web服務器所提供的訪問令牌。
(2) Expires屬性:設置Cookie的生存期。有兩種存儲類型的Cookie:會話性與持久性。Expires屬性缺省時,為會話性Cookie,僅保存在客戶端內存中,并在用戶關閉瀏覽器時失效;持久性Cookie會保存在用戶的硬盤中,直至生存期到或用戶直接在網頁中單擊“注銷”等按鈕結束會話時才會失效 。
(3) Path屬性:定義了Web站點上可以訪問該Cookie的目錄 。
(4) Domain屬性:指定了可以訪問該 Cookie 的 Web 站點或域。
2、session介紹
Session:與cookie功能效果相同。Session與Cookie的區別在于Session是記錄在服務端的,而Cookie是記錄在客戶端的。
當訪問服務器否個網頁的時候,會在服務器端的內存里開辟一塊內存,這塊內存就叫做session,而這個內存是跟瀏覽器關聯在一起的。這個瀏覽器指的是瀏覽器窗口,或者是瀏覽器的子窗口,意思就是,只允許當前這個session對應的瀏覽器訪問,就算是在同一個機器上新啟的瀏覽器也是無法訪問的。而另外一個瀏覽器也需要記錄session的話,就會再啟一個屬于自己的session。
一、cookie學習
1、設置cookie
- 在服務器設置cookie需要導入make_response包
- response=make_response(‘hello world’) 括號這里傳入的值是在客戶端響應的內容
- response.set_cookie(‘username’,‘mashibing’,max_age=3600) 第一個值是cookie名稱,第二個值cookie內容,第三個值設置cookie的有效時間
- 這個有效時間在服務器沒有關閉的狀態下,有效時間內,即使你關閉了客戶端(瀏覽器),再次打開客戶端(瀏覽器)仍能訪問到。
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 設置]是保護簽名數據的關鍵 - 保持此安全至關重要,否則攻擊者可以使用它來生成自己的簽名值。
- 設置SECRET_KEY 配合加密算法生成sessionID
- PERMANENT_SESSION_LIFETIME=timedelta(minutes=30) 設置該sessionID在服務器存儲的時間,在有效時間內客戶端(瀏覽器)關掉后再次重新訪問時,會對其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)
#導進來參數
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-06-10 使用Android實現一個懸浮在軟鍵盤上的輸入欄_Android
- 2023-02-14 C#實現ComboBox變色的示例代碼_C#教程
- 2022-07-27 Python中的數據可視化matplotlib與繪圖庫模塊_python
- 2022-06-19 GO語言對數組切片去重的實現_Golang
- 2022-10-18 filebeat同時收集錯誤日志與普通日志并存詳解_nginx
- 2023-08-01 el-table-column 內容不自動換行
- 2024-03-14 Linux Nginx自定義安裝目錄
- 2022-08-19 存儲引擎的應用場景
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支