十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
用python web框架的同學(xué)都知道 ,在使用例如 django,flask,tornado等這些web框架的時候,都有已經(jīng)為大家封裝好了的 setcookie的方法。那么這個方法究竟做了什么??赡苡行┬氯伺笥巡⒉荒芎芎玫睦斫?。那么今天dewei就帶著大家剖析一下,這些web框架里的類似 setcookie的方法(名字可能各不相同),究竟做了什么?
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比慶城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式慶城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋慶城地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。
首先大家知道,在一個http請求中,至少包含兩個結(jié)構(gòu),1是headers,請求的頭信息,里邊包含發(fā)起者的一些信息和一些附帶的自定義信息;2是body 請求傳輸?shù)臄?shù)據(jù)。那么在headers中,有一個key 叫做 "Set-Cookie",當(dāng)web服務(wù)器的請求response返回瀏覽器端的時候,如果 這個response的headers中包含“Set-Cookie”,那么瀏覽器就認(rèn)為有要種植到cookie里的鍵值對。那么這個“Set-Cookie”的結(jié)構(gòu)如何呢?我們在進(jìn)一步和大家討論。
我們知道了headers中有一個“Set-Cookie” 他是一個鍵值對,那么值就是要存儲的cookie信息。那么我們先來寫一個demo,根據(jù)demo 我們來解釋他們分別是什么。
"Set-Cookie": "token=xxxxx;Domain=xxxxx;Path=/;Expires=GMT"
好。我們看上邊的例子,有一個setcookie,他的value是一個字符串,那么大家和我從前往后看:token=xxxxx 是我們要存入cookies里的鍵值對,domain是你要將這個鍵值對存入哪個域名下,比如 www.abc.com; 那么當(dāng)存在這個域名下之后,只有在這個域下才可以看到這個cookie信息,path是具體顯示在這個域名下的哪個path,一般就在根就好了,最后的是expires是一個該鍵值對的過期時間,這個時間,是一個GMT時間(要加8小時喲)。當(dāng)然還有其他的參數(shù),比如httponly,只有設(shè)置這個cookie的后端才可以獲取和修改,max-age 他是一個有效期按照秒來計算的,一般和expires有一個存在就可以了。這里邊有一個坑在于,設(shè)置時間的時候,有的框架是給一個datetime,有的是給一個秒,都不一樣,但如果從原始狀態(tài)設(shè)置的時候,是要設(shè)置 GMT時間的。這里要注意下。另外這里每個參數(shù)之間用 “;”隔開,那么 那些web框架里的類似setcookie就是將你傳進(jìn)去的參數(shù)封裝好后放入headers中~更多的一些參數(shù)可以查看 這里
最后我們再來說一說session,對于session 大家第一個理解的內(nèi)容普遍(初級)是:它存在服務(wù)器端。沒有錯,他的最終的value的確存在服務(wù)端,但其實session和cookie也有著重要的牽絆。當(dāng)生成一個session的時候,會生成一個key:value,比如 session_12138:uidxxxxx 這是一個鍵值對。但實際上他依然會種一個cookie到瀏覽器,類似這樣的鍵值對 session_token: session_12138 。大家有沒有發(fā)現(xiàn)什么?這個cookie里的value 實際上就是 服務(wù)器端的 key,所以 通過cookie取出 session的key,在通過key取得session最終的結(jié)果。這就是session與cookie的關(guān)系~有的新人朋友,對這里理解不是非常透徹,今天解釋一下相關(guān)的流程,希望對大家有所幫助~