国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

電腦之家 - 專業(yè)計(jì)算機(jī)基礎(chǔ)知識(shí)與電腦技術(shù)學(xué)習(xí)網(wǎng)站
分類導(dǎo)航

路由器|交換機(jī)|網(wǎng)絡(luò)協(xié)議|網(wǎng)絡(luò)知識(shí)|

服務(wù)器之家 - 電腦之家 - 網(wǎng)絡(luò)技術(shù) - 網(wǎng)絡(luò)面經(jīng):你真的了解Cookie和Session嗎?

網(wǎng)絡(luò)面經(jīng):你真的了解Cookie和Session嗎?

2021-08-26 22:34程序新視界二師兄 網(wǎng)絡(luò)技術(shù)

在初級面試中,關(guān)于Cookie和Session的區(qū)別是一個(gè)高頻的面試題。如果只是機(jī)械的回答一下它們的區(qū)別,那你可能真的不了解Cookie和Session,就更別說靈活運(yùn)用了。

網(wǎng)絡(luò)面經(jīng):你真的了解Cookie和Session嗎?

在初級面試中,關(guān)于CookieSession的區(qū)別是一個(gè)高頻的面試題。如果只是機(jī)械的回答一下它們的區(qū)別,那你可能真的不了解Cookie和Session,就更別說靈活運(yùn)用了。

這篇文章帶你從Cookie和Session的初級應(yīng)用到高級應(yīng)用捋一遍,看看有多少不知道的內(nèi)容。

什么是Cookie?

我們知道HTTP協(xié)議是無狀態(tài)的,一次請求完成,不會(huì)持久化請求與相應(yīng)的信息。那么,在購物車、用戶登錄狀態(tài)、頁面?zhèn)€性化設(shè)置等場景下,就無法識(shí)別特定用戶的信息。這時(shí)Cookie就出現(xiàn)了。

Cookie是客戶端保存用戶信息的一種機(jī)制,將服務(wù)器發(fā)送到瀏覽器的數(shù)據(jù)保存在本地,下次向同一服務(wù)器再發(fā)起請求時(shí)被攜帶發(fā)送。對于Cookie,可以設(shè)置過期時(shí)間。

通常,Cookie用于告知服務(wù)端兩個(gè)請求是否來自同一瀏覽器,如保持用戶的登錄狀態(tài)。這樣就解決了HTTP無狀態(tài)的問題。

Cookie主要用于以下方面:

  • 會(huì)話狀態(tài)管理(如用戶登錄狀態(tài)、購物車、游戲分?jǐn)?shù)或其它需要記錄的信息)
  • 個(gè)性化設(shè)置(如用戶自定義設(shè)置、主題等)
  • 瀏覽器行為跟蹤(如跟蹤分析用戶行為等)

Cookie存儲(chǔ)在客戶端,這就意味著,可以通過一些方式進(jìn)行修改,欺騙服務(wù)器。針對這個(gè)問題,怎么解決呢?那就引入了Session。

什么是Session?

Session代表服務(wù)器和客戶端一次會(huì)話的過程。

維基百科這樣解釋道:在計(jì)算機(jī)科學(xué)領(lǐng)域來說,尤其是在網(wǎng)絡(luò)領(lǐng)域,會(huì)話(session)是一種持久網(wǎng)絡(luò)協(xié)議,在用戶(或用戶代理)端和服務(wù)器端之間創(chuàng)建關(guān)聯(lián),從而起到交換數(shù)據(jù)包的作用機(jī)制,session在網(wǎng)絡(luò)協(xié)議(例如telnet或FTP)中是非常重要的部分。

對照Cookie,Session是一種在服務(wù)器端保存數(shù)據(jù)的機(jī)制,用來跟蹤用戶狀態(tài)的數(shù)據(jù)結(jié)構(gòu),可以保存在文件、數(shù)據(jù)庫或者集群中。

當(dāng)在應(yīng)用程序的Web頁之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session對象中的變量將不會(huì)丟失,而會(huì)在整個(gè)用戶會(huì)話中一直存在下去。當(dāng)客戶端關(guān)閉會(huì)話,或者Session超時(shí)失效時(shí)會(huì)話結(jié)束。

目前大多數(shù)的應(yīng)用都是用Cookie實(shí)現(xiàn)Session跟蹤的。第一次創(chuàng)建Session時(shí),服務(wù)端會(huì)通過在HTTP協(xié)議中返回給客戶端,在Cookie中記錄SessionID,后續(xù)請求時(shí)傳遞SessionID給服務(wù),以便后續(xù)每次請求時(shí)都可分辨你是誰。

Cookie與Session的區(qū)別

關(guān)于Cookie與Session的區(qū)別,就是在面試中經(jīng)?;卮鸬膯栴}了。

  • 作用范圍不同,Cookie 保存在客戶端(瀏覽器),Session 保存在服務(wù)器端。
  • 存取方式的不同,Cookie只能保存 ASCII,Session可以存任意數(shù)據(jù)類型,比如UserId等。
  • 有效期不同,Cookie可設(shè)置為長時(shí)間保持,比如默認(rèn)登錄功能功能,Session一般有效時(shí)間較短,客戶端關(guān)閉或者Session超時(shí)都會(huì)失效。
  • 隱私策略不同,Cookie存儲(chǔ)在客戶端,信息容易被竊取;Session存儲(chǔ)在服務(wù)端,相對安全一些。
  • 存儲(chǔ)大小不同, 單個(gè)Cookie 保存的數(shù)據(jù)不能超過 4K,Session可存儲(chǔ)數(shù)據(jù)遠(yuǎn)高于Cookie。

禁用Cookie會(huì)怎樣?

如果客戶在瀏覽器禁用了Cookie,該怎么辦呢?

方案一:拼接SessionId參數(shù)。在GET或POST請求中拼接SessionID,GET請求通常通過URL后面拼接參數(shù)來實(shí)現(xiàn),POST請求可以放在Body中。無論哪種形式都需要與服務(wù)器獲取保持一致。

這種方案比較常見,比如老外的網(wǎng)站,經(jīng)常會(huì)提示是否開啟Cookie。如果未點(diǎn)同意或授權(quán),會(huì)發(fā)現(xiàn)瀏覽器的URL路徑中往往有@quot;?sessionId=123abc@quot;這樣的參數(shù)。

方案二:基于Token(令牌)。在APP應(yīng)用中經(jīng)常會(huì)用到Token來與服務(wù)器進(jìn)行交互。Token本質(zhì)上就是一個(gè)唯一的字符串,登錄成功后由服務(wù)器返回,標(biāo)識(shí)客戶的臨時(shí)授權(quán),客戶端對其進(jìn)行存儲(chǔ),在后續(xù)請求時(shí),通常會(huì)將其放在HTTP的Header中傳遞給服務(wù)器,用于服務(wù)器驗(yàn)證請求用戶的身份。

分布式系統(tǒng)中Session如何處理?

在分布式系統(tǒng)中,往往會(huì)有多臺(tái)服務(wù)器來處理同一業(yè)務(wù)。如果用戶在A服務(wù)器登錄,Session位于A服務(wù)器,那么當(dāng)下次請求被分配到B服務(wù)器,將會(huì)出現(xiàn)登錄失效的問題。

針對類似的場景,有三種解決方案:

方案一:請求精確定位。也就是通過負(fù)載均衡器讓來自同一IP的用戶請求始終分配到同一服務(wù)上。比如,Nginx的ip_hash策略,就可以做到。

方案二:Session復(fù)制共享。該方案的目標(biāo)就是確保所有的服務(wù)器的Session是一致的。像Tomcat等多數(shù)主流web服務(wù)器都采用了Session復(fù)制實(shí)現(xiàn)Session的共享.

方案三:基于共享緩存。該方案是通過將Session放在一個(gè)公共地方,各個(gè)服務(wù)器使用時(shí)去取即可。比如,存放在Redis、Memcached等緩存中間件中。

在Spring Boot項(xiàng)目中,如果集成了Redis,Session共享可以非常方便的實(shí)現(xiàn)。

同源策略與跨域請求

所謂的“同源”指的是“三個(gè)相同”:協(xié)議相同、域名相同、端口相同。只有這三個(gè)完全相同,才算是同源。

同源策略的目的:是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。

比如,用戶訪問了銀行網(wǎng)站A,再去瀏覽其他網(wǎng)站,如果其他網(wǎng)站可以讀取A的Cookie,隱私信息便會(huì)泄露。更可怕的是,通常Cookie還用來保存用戶登錄狀態(tài),會(huì)出現(xiàn)冒充用戶行為。因此,@quot;同源策略@quot;是必需的,如果Cookie可以共享,互聯(lián)網(wǎng)就毫無安全可言了。

同源策略保證了一定的安全性,但在某些場景下也帶來了不便,比如常見的跨域請求問題。

在HTML中,@lt;a@gt;,@lt;form@gt;, @lt;img@gt;, @lt;script@gt;, @lt;iframe@gt;, @lt;link@gt; 等標(biāo)簽以及Ajax都可以指向一個(gè)資源地址,而所謂的跨域請求就是指:當(dāng)前發(fā)起請求的域與該請求指向的資源所在的域不一樣。同源即同域,三項(xiàng)有一項(xiàng)不同便會(huì)出現(xiàn)跨域請求。

瀏覽器會(huì)對跨域請求做出限制,因?yàn)榭缬蛘埱罂赡軙?huì)被利用發(fā)動(dòng)CSRF攻擊。

CSRF(Cross-site request forgery),即“跨站請求偽造”,也被稱為:one click attack/session riding,縮寫為:CSRF/XSRF。CSRF攻擊者在用戶已經(jīng)登錄目標(biāo)網(wǎng)站之后,誘使用戶訪問一個(gè)攻擊頁面,利用目標(biāo)網(wǎng)站對用戶的信任,以用戶身份在攻擊頁面對目標(biāo)網(wǎng)站發(fā)起偽造用戶操作的請求,達(dá)到攻擊目的。

針對跨域請求通常有如下方法:

  • 通過代理避開跨域請求;
  • 通過Jsonp跨域;
  • 通過跨域資源共享(CORS);

關(guān)于跨域的具體解決步驟,就不再展開了。

小結(jié)

在準(zhǔn)備面試題時(shí),我們通常只會(huì)去背誦Cookie和Session的區(qū)別。但只有系統(tǒng)的學(xué)習(xí)才能更深刻的把知識(shí)點(diǎn)串聯(lián)起來,形成強(qiáng)大記憶,融會(huì)貫通的效果。比如,本文了解了Cookie與Session出現(xiàn)的原因、解決的問題以及引入之后又會(huì)帶來什么問題等,更加系統(tǒng)全面的掌握了這一知識(shí)點(diǎn)。

原文鏈接:https://mp.weixin.qq.com/s/cuTmhjnzdngE0EEb5RlbxQ

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人精品视频在线观看 | 欧美一区二 | 国产中文| 国产羞羞视频 | 美女黄网 | 一级一片免费看 | 久久99久久久久久 | 中文免费字幕 | 国内精品久久久久久久影视简单 | 国产二区视频 | 日韩在线一区二区 | 久久99久久99精品免观看粉嫩 | 91免费视频| 在线视频a | 九九热九九 | 欧美性一区二区三区 | 北条麻妃99精品青青久久主播 | 依人在线 | 欧美一级视频 | 五月天婷婷精品 | 国产亚洲精品美女久久久久久久久久 | 日韩欧美一区二区在线观看 | 羞羞视频在线免费 | 国产欧美日韩在线 | 欧美日韩高清在线观看 | 亚洲色图综合 | 婷婷国产 | 男人久久久 | 日本在线免费观看视频 | 中文视频在线 | 在线精品亚洲 | 成人精品一区二区三区中文字幕 | 亚洲精品一区在线观看 | 精品99视频 | 免费一级片在线观看 | 91网在线观看| 久久伊99综合婷婷久久伊 | 求av网站| 91色乱码一区二区三区 | 欧美国产激情二区三区 | 97成人在线免费视频 |