电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Django操作cookie的實現

瀏覽:98日期:2024-09-05 15:39:06
前言

cookie:在網站中,http請求是無狀態的。也就是說即使第一次和服務器連接后并且登錄成功后,第二次請求服務器依然不能知道當前請求是哪個用戶。cookie的出現就是為了解決這個問題,第一次登錄后服務器返回一些數據(cookie)給瀏覽器,然后瀏覽器保存在本地,當該用戶發送第二次請求的時候,就會自動的把上次請求存儲的cookie數據自動的攜帶給服務器,服務器通過瀏覽器攜帶的數據就能判斷當前用戶是哪個了。cookie存儲的數據量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4KB。因此使用cookie只能存儲一些小量的數據。

cookie的特點:

⑴以鍵值對方式進行存儲 ⑵通過瀏覽器訪問一個網站時,會將瀏覽器存儲的跟網站相關的所有cookie信息發送給該網站的服務器 ⑶cookie是基于域名安全的 ⑷cookie是有過期時間的,如果不指定,默認關閉瀏覽器之后cookie就會過期

Cookie的不可跨域名性

1、很多網站都會使用Cookie。例如,Google會向客戶端頒發Cookie,Baidu也會向客戶端頒發Cookie。那瀏覽器訪問Google會不會也攜帶上Baidu頒發的Cookie呢?或者Google能不能修改Baidu頒發的Cookie呢

2、答案是否定的。Cookie具有不可跨域名性。根據Cookie規范,瀏覽器訪問Google只會攜帶Google的Cookie,而不會攜帶Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie

3、Cookie在客戶端是由瀏覽器來管理的。瀏覽器能夠保證Google只會操作Google的Cookie而不會操作Baidu的Cookie,從而保證用戶的隱私安全。瀏覽器判斷一個網站是否能操作另一個網站Cookie的依據是域名。Google與Baidu的域名不一樣,因此Google不能操作Baidu的Cookie

4、需要注意的是,雖然網站images.google.com與網站www.google.com同屬于Google,但是域名不一樣,二者同樣不能互相操作彼此的Cookie

設置cookie

設置cookie是設置值給瀏覽器的。因此我們需要通過response的對象來設置,設置cookie可以通過response.set_cookie來設置,這個方法的相關參數如下:

key:這個cookie的key。 value:這個cookie的value。 max_age:最長的生命周期。單位是秒。 expires:過期時間。跟max_age是類似的,只不過這個參數需要傳遞一個具體的日期,比如datetime或者是符合日期格式的字符串。如果同時設置了expires和max_age,那么將會使用expires的值作為過期時間。 path:對域名下哪個路徑有效。默認是對域名下所有路徑都有效。 domain:針對哪個域名有效。默認是針對主域名下都有效,如果只要針對某個子域名才有效,那么可以設置這個屬性. secure:是否是安全的,如果設置為True,那么只能在https協議下才可用。 httponly:默認是False。如果為True,那么在客戶端不能通過JavaScript進行操作。獲取cookie

獲取瀏覽器發送過來的cookie信息。可以通過request.COOKIES來或者。這個對象是一個字典類型。比如獲取所有的cookie,那么示例代碼如下:

cookies = request.COOKIESfor cookie_key,cookie_value in cookies.items(): print(cookie_key,cookie_value)刪除cookie

通過delete_cookie即可刪除cookie。實際上刪除cookie就是將指定的cookie的值設置為空的字符串,然后使用將他的過期時間設置為0,也就是瀏覽器關閉后就過期。

實戰案例

我們先在uris.py中寫入三個路由,一個設置cookie路由,一個獲取cookie路由,一個刪除cookie路由,代碼如下:

# 項目根路由urlpatterns = [ path(’cookie_app/’, include(’cookie_app.urls’)),]# cookie_app.urls.pyurlpatterns = [ path(’set_cookie/’, views.set_cookie), path(’get_cookie/’, views.get_cookie), path(’delete_cookie/’, views.delete_cookie),]

接著我們在views.py視圖中寫入對應的視圖,代碼如下:

def set_cookie(request): '''設置cookie''' response = HttpResponse(’success’) response.set_cookie(’username’, ’jkc’, max_age=180) # 設置cookie,過期時間為180秒 return responsedef get_cookie(request): '''獲取cookie''' cookies = request.COOKIES return HttpResponse(cookies.items())def delete_cookie(request): '''刪除cookie''' response = HttpResponse(’刪除cookie成功’) response.delete_cookie(’username’) return response

接下來我們訪問url地址127.0.0.1/cookie_app/set_cookie/,打開F12,我們可以看到網絡請求中的response header中有set-cookie字段

Django操作cookie的實現

我們也可以打開網站地址上的!,如下圖

Django操作cookie的實現

然后會出現彈出以下的窗口,點擊cookie

Django操作cookie的實現

我們會查看到自己剛才設置的cookieusername,且過期時間是之前設置的3分鐘

Django操作cookie的實現

Django操作cookie的實現

接下來我們訪問http://127.0.0.1:8000/cookie_app/get_cookie/獲取cookie,瀏覽器頁面會返回(’username’, ’jkc’),我們也可以打開F12查看請求頭的信息,會發現請求頭中攜帶了cookie信息,如下圖

Django操作cookie的實現

最后我們訪問http://127.0.0.1:8000/cookie_app/delete_cookie/刪除cookie,瀏覽器頁面返回刪除cookie成功,接著我們查看網站的cookie信息查看會發現username的值為空,如下圖

Django操作cookie的實現

為什么會設置為空?我們可以查看delete_cookie方法的源碼,如下

def delete_cookie(self, key, path=’/’, domain=None): # Most browsers ignore the Set-Cookie header if the cookie name starts # with __Host- or __Secure- and the cookie doesn’t use the secure flag. secure = key.startswith((’__Secure-’, ’__Host-’)) self.set_cookie(key, max_age=0, path=path, domain=domain, secure=secure,expires=’Thu, 01 Jan 1970 00:00:00 GMT’, )

可以看到,它里面其實是調用了set_cookie方法,然后沒有給value賦值,默認就為’’空字符串,然后設置max_age為0,代表過期時間就是現在,立馬就過期

到此這篇關于Django操作cookie的實現的文章就介紹到這了,更多相關Django操作cookie內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
主站蜘蛛池模板: 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 石油/泥浆/不锈钢防腐/砂泵/抽砂泵/砂砾泵/吸砂泵/压滤机泵 - 专业石油环保专用泵厂家 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 实验室隔膜泵-无油防腐蚀隔膜泵-耐腐蚀隔膜真空泵-杭州景程仪器 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 郑州墨香品牌设计公司|品牌全案VI设计公司 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 高温高压釜(氢化反应釜)百科 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | 沈阳楼承板_彩钢板_压型钢板厂家-辽宁中盛绿建钢品股份有限公司 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 |