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

資訊專欄INFORMATION COLUMN

你真的了解 Cookie 和 Session 嗎

lijy91 / 1584人閱讀

摘要:瀏覽器的同源策略把跨域請求都禁止了,但是頁面中的標簽是例外,不受同源策略限制。的理念就是,與服務端約定好一個回調函數名,服務端接收到請求后,將返回一段,在這段代碼中調用了約定好的回調函數,并且將數據作為參數進行傳遞。

我在做面試官的時候,曾經問過很多朋友這個問題: Cookie 和 Session 有什么區別呢?大部分的面試者應該都可以說上一兩句,比如:什么是 Cookie?什么是 Session?兩者的區別等。

但如果再往深入探討的話,就慢慢有一些朋友不太了解了,談起原理時就很少有朋友全部回答準確。今天和大家一起深入聊聊有關 Cookie 和 Session 的話題 。

第一層樓

什么是 Cookie 和 Session ");

什么是 Cookie

HTTP Cookie(也叫 Web Cookie或瀏覽器 Cookie)是服務器發送到用戶瀏覽器并保存在本地的一小塊數據,它會在瀏覽器下次向同一服務器再發起請求時被攜帶并發送到服務器上。通常,它用于告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態。Cookie 使基于無狀態的 HTTP 協議記錄穩定的狀態信息成為了可能。

Cookie 主要用于以下三個方面:

會話狀態管理(如用戶登錄狀態、購物車、游戲分數或其它需要記錄的信息)

個性化設置(如用戶自定義設置、主題等)

瀏覽器行為跟蹤(如跟蹤分析用戶行為等)

什么是 Session

Session 代表著服務器和客戶端一次會話的過程。Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。當客戶端關閉會話,或者 Session 超時失效時會話結束。

第二層樓

Cookie 和 Session 有什么不同?

作用范圍不同,Cookie 保存在客戶端(瀏覽器),Session 保存在服務器端。

存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意數據類型,一般情況下我們可以在 Session 中保持一些常用變量信息,比如說 UserId 等。

有效期不同,Cookie 可設置為長時間保持,比如我們經常使用的默認登錄功能,Session 一般失效時間較短,客戶端關閉或者 Session 超時都會失效。

隱私策略不同,Cookie 存儲在客戶端,比較容易遭到不法獲取,早期有人將用戶的登錄名和密碼存儲在 Cookie 中導致信息被竊??;Session 存儲在服務端,安全性相對 Cookie 要好一些。

存儲大小不同, 單個 Cookie 保存的數據不能超過 4K,Session 可存儲數據遠高于 Cookie。

前兩層樓內容,絕大部分同學都可以準確回答

第三層樓

為什么需要 Cookie 和 Session,他們有什么關聯?

說起來為什么需要 Cookie ,這就需要從瀏覽器開始說起,我們都知道瀏覽器是沒有狀態的(HTTP 協議無狀態),這意味著瀏覽器并不知道是張三還是李四在和服務端打交道。這個時候就需要有一個機制來告訴服務端,本次操作用戶是否登錄,是哪個用戶在執行的操作,那這套機制的實現就需要 Cookie 和 Session 的配合。

那么 Cookie 和 Session 是如何配合的呢?我畫了一張圖大家可以先了解下。

用戶第一次請求服務器的時候,服務器根據用戶提交的相關信息,創建創建對應的 Session ,請求返回時將此 Session 的唯一標識信息 SessionID 返回給瀏覽器,瀏覽器接收到服務器返回的 SessionID 信息后,會將此信息存入到 Cookie 中,同時 Cookie 記錄此 SessionID 屬于哪個域名。

當用戶第二次訪問服務器的時候,請求會自動判斷此域名下是否存在 Cookie 信息,如果存在自動將 Cookie 信息也發送給服務端,服務端會從 Cookie 中獲取 SessionID,再根據 SessionID 查找對應的 Session 信息,如果沒有找到說明用戶沒有登錄或者登錄失效,如果找到 Session 證明用戶已經登錄可執行后面操作。

根據以上流程可知,SessionID 是連接 Cookie 和 Session 的一道橋梁,大部分系統也是根據此原理來驗證用戶登錄狀態。

三層樓的內容,大部分同學可以講清楚。

第四層樓

既然服務端是根據 Cookie 中的信息判斷用戶是否登錄,那么如果瀏覽器中禁止了 Cookie,如何保障整個機制的正常運轉。

第一種方案,每次請求中都攜帶一個 SessionID 的參數,也可以 Post 的方式提交,也可以在請求的地址后面拼接 xxx");。

第二種方案,Token 機制。Token 機制多用于 App 客戶端和服務器交互的模式,也可以用于 Web 端做用戶狀態管理。

Token 的意思是“令牌”,是服務端生成的一串字符串,作為客戶端進行請求的一個標識。Token 機制和 Cookie 和 Session 的使用機制比較類似。

當用戶第一次登錄后,服務器根據提交的用戶信息生成一個 Token,響應時將 Token 返回給客戶端,以后客戶端只需帶上這個 Token 前來請求數據即可,無需再次登錄驗證。

四層樓的內容,一部分同學可以講清楚。

第五層樓

如何考慮分布式 Session 問題?

在互聯網公司為了可以支撐更大的流量,后端往往需要多臺服務器共同來支撐前端用戶請求,那如果用戶在 A 服務器登錄了,第二次請求跑到服務 B 就會出現登錄失效問題。

分布式 Session 一般會有以下幾種解決方案:

Nginx ip_hash 策略,服務端使用 Nginx 代理,每個請求按訪問 IP 的 hash 分配,這樣來自同一 IP 固定訪問一個后臺服務器,避免了在服務器 A 創建 Session,第二次分發到服務器 B 的現象。

Session 復制,任何一個服務器上的 Session 發生改變(增刪改),該節點會把這個 Session 的所有內容序列化,然后廣播給所有其它節點。

共享 Session,服務端無狀態話,將用戶的 Session 等信息使用緩存中間件來統一管理,保障分發到每一個服務器的響應結果都一致。

建議采用第三種方案。

第六層樓

如何解決跨域請求?Jsonp 跨域的原理是什么?

說起跨域請求,必須要了解瀏覽器的同源策略,同源策略/SOP(Same origin policy)是一種約定,由 Netscape 公司 1995年引入瀏覽器,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到 XSS、CSFR 等攻擊。所謂同源是指"協議+域名+端口"三者相同,即便兩個不同的域名指向同一個 ip 地址,也非同源。

解決跨域請求的常用方法是:

通過代理來避免,比如使用 Nginx 在后端轉發請求,避免了前端出現跨域的問題。

通過 Jsonp 跨域

其它跨域解決方案

重點談一下 Jsonp 跨域原理。瀏覽器的同源策略把跨域請求都禁止了,但是頁面中的

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

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

相關文章

  • 摩拜前端周刊第8期

    摘要:地址前端詞典提高幸福感的個技巧推薦文章介紹了個更加簡潔優雅的使用技巧。這些技巧確實在實際開發中十分常用,作者總結的很好,特別是針對降級問題又學到了一個新思路。值得奮戰在一線的攻城獅們閱讀學習。Ladies and 鄉親們,摩拜前端周刊起航啦~ 摩拜前端團隊會收集每周前端優秀文章,每周五發布至掘金平臺,歡迎關注我們~ 過個沒什么了不起的一天,耀眼一些,你有資格 Top 榜 「中高級前端」...

    lykops 評論0 收藏0
  • 詳解 CookieSession,Token

    摘要:由于是存在客戶端上的,所以瀏覽器加入了一些限制確保不會被惡意使用,同時不會占據太多磁盤空間。簽名是對前兩部分的簽名,防止數據被篡改。的作用最開始的初衷是為了實現授權和身份認證作用的,可以實現無狀態,分布式的應用授權。 前言 無狀態的HTTP協議 很久很久之前, Web基本都是文檔的瀏覽而已。既然是瀏覽, 作為服務器, 不需要記錄在某一段時間里都瀏覽了什么文檔, 每次請求都是一個新的HT...

    Allen 評論0 收藏0
  • session理解

    摘要:理解還是那句。。。。而還不是很理解的,谷歌下,要理解這兩個東西其實也不難。。當瀏覽器端禁用時,這個依然會被創建。其實我的理解很簡單不對的地方歡迎指出。。 session理解 還是那句。。。。新手上路。。大神歡迎指點 1.session的概念 其實什么是session?什么是cookie?這些都是些老掉牙的問題了。。而做過相關的開發的人,基本都知道。。而還不是很理解的,谷歌下,要理解這兩...

    phpmatt 評論0 收藏0
  • 騰訊大廈與我有個約定(面試精華帖)

    摘要:第二天相同的時間相同的地方,我卻走錯了地方,原來成都騰訊大廈有兩棟。 在一個雨蒙蒙的清晨,百般無聊的閑逛中,突然回憶起了我這一生中的第一次面試經歷。雖然結果是以失敗而告終,但此時此刻的回憶,帶給我的并不是失敗而是成長。 作為一名實習生,我深刻的感受到在校園與社會夾縫中生活的不易。也十分的幸運,我還有足夠的青春與活力驅動著我去學習,讓我的未來不再遙不可及;讓我能在社會的這份土壤里扎根成長...

    monw3c 評論0 收藏0
  • 騰訊大廈與我有個約定(面試精華帖)

    摘要:第二天相同的時間相同的地方,我卻走錯了地方,原來成都騰訊大廈有兩棟。 在一個雨蒙蒙的清晨,百般無聊的閑逛中,突然回憶起了我這一生中的第一次面試經歷。雖然結果是以失敗而告終,但此時此刻的回憶,帶給我的并不是失敗而是成長。 作為一名實習生,我深刻的感受到在校園與社會夾縫中生活的不易。也十分的幸運,我還有足夠的青春與活力驅動著我去學習,讓我的未來不再遙不可及;讓我能在社會的這份土壤里扎根成長...

    yimo 評論0 收藏0

發表評論

0條評論

lijy91

|高級講師

TA的文章

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