您好,登錄后才能下訂單哦!
用python web框架的同學都知道 ,在使用例如 django,flask,tornado等這些web框架的時候,都有已經為大家封裝好了的 setcookie的方法。那么這個方法究竟做了什么。可能有些新人朋友并不能很好的理解。那么今天dewei就帶著大家剖析一下,這些web框架里的類似 setcookie的方法(名字可能各不相同),究竟做了什么?
首先大家知道,在一個http請求中,至少包含兩個結構,1是headers,請求的頭信息,里邊包含發起者的一些信息和一些附帶的自定義信息;2是body 請求傳輸的數據。那么在headers中,有一個key 叫做 "Set-Cookie",當web服務器的請求response返回瀏覽器端的時候,如果 這個response的headers中包含“Set-Cookie”,那么瀏覽器就認為有要種植到cookie里的鍵值對。那么這個“Set-Cookie”的結構如何呢?我們在進一步和大家討論。
我們知道了headers中有一個“Set-Cookie” 他是一個鍵值對,那么值就是要存儲的cookie信息。那么我們先來寫一個demo,根據demo 我們來解釋他們分別是什么。
"Set-Cookie": "token=xxxxx;Domain=xxxxx;Path=/;Expires=GMT"
好。我們看上邊的例子,有一個setcookie,他的value是一個字符串,那么大家和我從前往后看:token=xxxxx 是我們要存入cookies里的鍵值對,domain是你要將這個鍵值對存入哪個域名下,比如 www.abc.com; 那么當存在這個域名下之后,只有在這個域下才可以看到這個cookie信息,path是具體顯示在這個域名下的哪個path,一般就在根就好了,最后的是expires是一個該鍵值對的過期時間,這個時間,是一個GMT時間(要加8小時喲)。當然還有其他的參數,比如httponly,只有設置這個cookie的后端才可以獲取和修改,max-age 他是一個有效期按照秒來計算的,一般和expires有一個存在就可以了。這里邊有一個坑在于,設置時間的時候,有的框架是給一個datetime,有的是給一個秒,都不一樣,但如果從原始狀態設置的時候,是要設置 GMT時間的。這里要注意下。另外這里每個參數之間用 “;”隔開,那么 那些web框架里的類似setcookie就是將你傳進去的參數封裝好后放入headers中~更多的一些參數可以查看 這里
最后我們再來說一說session,對于session 大家第一個理解的內容普遍(初級)是:它存在服務器端。沒有錯,他的最終的value的確存在服務端,但其實session和cookie也有著重要的牽絆。當生成一個session的時候,會生成一個key:value,比如 session_12138:uidxxxxx 這是一個鍵值對。但實際上他依然會種一個cookie到瀏覽器,類似這樣的鍵值對 session_token: session_12138 。大家有沒有發現什么?這個cookie里的value 實際上就是 服務器端的 key,所以 通過cookie取出 session的key,在通過key取得session最終的結果。這就是session與cookie的關系~有的新人朋友,對這里理解不是非常透徹,今天解釋一下相關的流程,希望對大家有所幫助~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。