網(wǎng)站開(kāi)發(fā)之cookie和session
什么是cookie?
當(dāng)我們要訪問(wèn)一個(gè)需要登陸的網(wǎng)站時(shí),必須輸入用戶名和密碼拨脉,登錄之后才可以可瀏覽內(nèi)容,當(dāng)用戶關(guān)閉瀏覽器后再一次登陸時(shí)塑径,智能的選擇是不需要用戶再次登錄即可直接瀏覽,而cookie就是為解決這類(lèi)方法而生的填具。
通俗來(lái)講统舀,cookie就是為了解決瀏覽器重復(fù)登錄得情況得匆骗。有了cookie,用戶就不需要重復(fù)得輸入來(lái)訪問(wèn)誉简。cookie是存放在瀏覽器中得附帶用戶信息得一種格式碉就。
什么是session?
session也是用來(lái)存儲(chǔ)用戶信息的闷串,作用與cookie基本類(lèi)似瓮钥,與cookie不同的是cookie是存儲(chǔ)在用戶電腦的瀏覽器中的,而session是存儲(chǔ)在服務(wù)器中的烹吵。存儲(chǔ)在服務(wù)器中會(huì)更加安全碉熄,同時(shí)也會(huì)占用服務(wù)器的一些資源。
*當(dāng)前市場(chǎng)上一般將cookie和session合起來(lái)使用肋拔,一般有兩種方式:
1.存儲(chǔ)在服務(wù)器中锈津,通過(guò)cookie存儲(chǔ)一個(gè)sessionid,具體的數(shù)據(jù)保存在session中凉蜂,如果用戶已經(jīng)登陸琼梆,服務(wù)器會(huì)在cookie中存儲(chǔ)一個(gè)sessionid,下次用戶再次請(qǐng)求的時(shí)候就會(huì)把sessionid攜帶上來(lái)窿吩,服務(wù)器根據(jù)sessionid判斷是否是同一個(gè)用戶茎杂。這種被稱為server side session
2.將session數(shù)據(jù)加密,存儲(chǔ)在cookie中纫雁,這種叫做client side session煌往。flask采用的是第二種方式。
flask的session機(jī)制:
flask的session機(jī)制有略微的不同先较,不同之處在于:
在flask中是將用戶登錄的session信息進(jìn)行加密然后存放在cookie中携冤,返回給瀏覽器,瀏覽器再次請(qǐng)求時(shí)會(huì)將cookie提交給服務(wù)器闲勺,服務(wù)器根據(jù)cookie進(jìn)行解密曾棕,得到用戶的信息。這樣可以節(jié)省服務(wù)器資源菜循。
在flask中操作cookie數(shù)據(jù):
key:設(shè)置cookie的key value:key相對(duì)應(yīng)的value max_age:設(shè)置cookie的過(guò)期時(shí)間 domain:當(dāng)前cookie在那個(gè)域名中有效 path:當(dāng)前cookie在那個(gè)路徑中有效