国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Cookie 與 Session 詳(hu)解(che)【拿去面試用】

zhaofeihao / 2205人閱讀

摘要:于是和就出現了,用于在端和端來分別維護我是誰的狀態。這種做法就是協議本身支持狀態。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以后的消費相聯系起來。所以兩者的作用域不一樣。因此才會出現這種情況。

1、Cookie

Cookie 是瀏覽器訪問服務器后,服務器傳給瀏覽器的一段數據

該數據以一個稱為“Set-Cookie”的 HTTP 報頭格式從 Web 服務器發出。 瀏覽器以稱為“Cookie”的 HTTP 報頭格式將 Cookie 送回服務器

Cookie 在瀏覽器端是以文件形式保存的

此后每次瀏覽器訪問該服務器,都必須帶上這段數據

包含多個字段 "過期時間"、"路徑"、"域名"

Cookie 是在客戶端保持狀態的方案,補充 HTTP 無狀態協議的特點

2、Session

Session 是在服務端保持狀態的方案

用戶打開瀏覽器訪問網站,服務端生成的sessionID,傳遞到瀏覽器的 Cookie 保存 ,在每次請求時都會自動帶上 sessionID ,然后服務器端根據 sessionID 找到對應的 Session 值

3、HTTP協議

上文有提到 Cookie 與 Session 都產生于用來解決 HTTP 協議的無狀態,無連接的特點,那么到底什么可以被稱作“無狀態”呢?
于是我們可以簡單整理一下通信的過程(見下圖),位于應用層以下的TCP/IP協議對數據的層層封裝,使得我們從一個客戶端到服務端(或者可以說另一個客戶端)的數據交換看起來是端到端的,隱藏一層又一層的數據封裝和校驗。
那么,“無狀態”在這個模型中到底體現在什么地方呢?粗略的可以理解為【C端是一個求愛者,S端是一個人見人愛的女神】,
我從C端給S端發了一句“你喜歡我嗎”,
S端回復了一句“喜歡呀”,
C端再問“你喜歡我什么”
S端卻回了一句“我什么時候喜歡你了”
......
其實我意在說明,“無狀態”即為無感情,無上下文,是一次匿名的交互,寫這個前看了許多文章中,把“無狀態”歸為HTTP協議的_缺陷_,但是我覺得更是一種_特點_,從WIKI百科的描述中可以見到這句話

High-traffic websites often benefit from web cache servers that deliver content on behalf of upstream servers to improve response time

可以將其理解為,HTTP協議為“高速通信”帶來了好處,也是歷史選擇了這種機制。但是隨著發展,我們需要不能再匿名的去交流,我們需要知道對方是誰,我們期待下面的對話場景:
C端:“你喜歡我嗎”
S端:“喜歡你啊”
C端:“喜歡我什么”
S端:“所有”
......
emmmmmm...這可能是我們想要的效果,我們需要知道對方是誰,知道上下文是什么,需要維護對方是誰的這個_狀態_。于是 Cookie 和 Session 就出現了,用于在C端和S端來分別維護“我是誰”的狀態。
如果想聽更好的故事,下面的可能更加的奏效

常去的一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。想象一下其實也無外乎下面的幾種方案: 
1、該店的店員很厲害,能記住每位顧客的消費數量,只要顧客一走進咖啡店,店員就知道該怎么對待了。這種做法就是協議本身支持狀態。
2、發給顧客一張卡片,上面記錄著消費的數量,一般還有個有效期限。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以后的消費相聯系起來。這種做法就是在客戶端保持狀態。
3、發給顧客一張會員卡,除了卡號之外什么信息也不紀錄,每次消費時,如果顧客出示該卡片,則店員在店里的紀錄本上找到這個卡號對應的紀錄添加一些消費信息。這種做法就是在服務器端保持狀態。

4、Cookie 與 Session 的關系

先引用一句WIKI 上在介紹Session時候對Cookie的解釋吧

Client-side sessions use cookies and cryptographic techniques to maintain state without storing as much data on the server. When presenting a dynamic web page, the server sends the current state data to the client (web browser) in the form of a cookie. The client saves the cookie in memory or on disk. With each successive request, the client sends the cookie back to the server, and the server uses the data to "remember" the state of the application for that specific client and generate an appropriate response.

我就翻譯第一句話吧. 客戶端session使用cookie和加密技術來保持狀態
可以很容易的發現,他們的作用大致一樣,存儲位置不同,
下面再用一段PHP程序來解釋吧

后端代碼:


第一次訪問;
$_COOKIE并沒有值

第二次訪問:
$_COOKIE有值了

所以可以很明顯的看出,setcookie()對于 $_COOKIE 的影響并不是立即生效的.這是因為setcookie()是用來給客戶端發送一個HTTP Cookie 的值, 但是 $_COOKIE 則是來獲取客戶端傳遞的 Cookie 值。所以兩者的作用域不一樣。因此才會出現這種情況。

5、寫在最后

關于 Session 和 Cookie 的理解就到此為止,我覺得應該設計到更多知識,包括但不限于瀏覽器的運行機制,Cookie 實現機制, Session 持久化,php.ini 對session的影響etc.

如果有不對的地方,記得來交互意見 :)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28530.html

相關文章

  • 【C語言】超??指針是個什么針?(一次性搞定指針問題)

    目錄 前言 一、 什么是指針? 引例 計算機是怎么對內存單元編號的呢? 內存空間的地址如何得到 想存地址怎么辦? ? 本質目的不是為了存地址 ?二、指針和指針類型 為什么有不同類型的指針 1.指針的解引用 2.指針+-整數 三、野指針 造成野指針的原因 1.未主動初始化指針 ?2.指針越界訪問 3.指針指向的空間釋放 規避野指針 四、指針運算 1.指針+-整數 ?2.指針-指針 ?3.指針的關系運...

    tigerZH 評論0 收藏0
  • python模擬登錄segmentfault及備份文章

    摘要:繼續嘗試,成功,但是還是未登錄狀態。如前所說,用模擬登錄拿到,然后帶上去取文章備份就好了,用加了點并發,代碼放到上了,地址,歡迎使用及拍磚以上 直接post登錄失敗 一般的網站確實直接post之后就登錄成功了,然后拿到cookie想怎么玩就怎么玩。不過的確世事難料,失敗在所難免。 首先是人肉登錄,用chrome的network欄查看post了些什么東西,有三項: mail passw...

    DrizzleX 評論0 收藏0
  • 數據工程師妹子養成手記——數據庫篇

    摘要:是什么呀是一個和不太一樣的數據庫。懷疑是同時聯了四個集合的數據造成的。這本書的定位是和的應用,所以有意弱化了數據庫的搭建維護和底層優化。所以本書可能不適合數據庫工程師。 這篇文章沒有代碼,請放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個程序員的一生應該這樣度過:當她回首往事的時候,她不會因為搭建環境浪費時間而悔恨,也不會因為集群無法運行而羞恥。這樣,在她開發的時候,...

    yexiaobai 評論0 收藏0

發表評論

0條評論

zhaofeihao

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<