摘要:那么,怎么才能讓服務(wù)器識別瀏覽器身份,認(rèn)為是同一用戶的多次請求,從而達(dá)到數(shù)據(jù)共享呢這就要用到會話技術(shù)了,本質(zhì)上就是數(shù)據(jù)持久化存儲。
由來
瀏覽器和服務(wù)器間的數(shù)據(jù)交互,就是會話。 但是呢,http協(xié)議是無狀態(tài)無記憶的,就會導(dǎo)致業(yè)務(wù)的不連續(xù)性。 [不連續(xù)性的說明]譬如你在xxx網(wǎng)站A界面登錄成功,當(dāng)你點(diǎn)擊跳轉(zhuǎn)到B界面時,又會提示請登錄。 那么,怎么才能讓服務(wù)器識別瀏覽器身份,認(rèn)為是同一用戶的多次請求,從而達(dá)到數(shù)據(jù)共享呢? 這就要用到[會話技術(shù)]了,本質(zhì)上就是數(shù)據(jù)持久化存儲。 會話技術(shù),就是來解決http協(xié)議缺陷而導(dǎo)致的業(yè)務(wù)不連續(xù)問題。 相關(guān)補(bǔ)充:cookie在瀏覽器端的存儲,是有數(shù)據(jù)量限制的,一般是4k; 而前端本地存儲技術(shù)可彌補(bǔ),譬如: localStorage (20M) 本地存儲 只要用戶不手動刪除,就一直存在 應(yīng)用場景:記住皮膚;瀏覽歷史搜索;回到上一次離開的位置等 sessionStorage (5M) 會話存儲 瀏覽器關(guān)閉就沒了 應(yīng)用場景: 單頁面應(yīng)用間數(shù)據(jù)的傳遞 可能存儲在瀏覽器或硬盤上。 會話技術(shù),從保存位置上有所區(qū)分: 持久化存儲在服務(wù)端,是session 持久化存儲在客戶端,是cookie
cookie過程分析
瀏覽器請求XXX網(wǎng)站服務(wù)器后,服務(wù)器把數(shù)據(jù)存儲在瀏覽器的cookie中; 后來的每次請求,瀏覽器都會攜帶該網(wǎng)站內(nèi)所有的cookie作為身份,由服務(wù)端腳本來識別處理。 當(dāng)然,這一過程是基于瀏覽器執(zhí)行的。同一網(wǎng)站在不同的瀏覽器間存儲的cookie是不能共享的。 cookie默認(rèn)是會話周期,即從瀏覽器打開,請求服務(wù)器資源,到關(guān)閉瀏覽器這一過程。 cookie因存儲在客戶端而有安全性的問題,且每次請求都會攜帶所有的cookie內(nèi)容。
使用
/*cookie*/ //存儲的數(shù)據(jù)類型,一般是字符串 //格式說明(未展示所有參數(shù),有興趣的可查手冊) setcookie("數(shù)據(jù)名","數(shù)據(jù)值","有效期","有效路徑","有效域名"); // 特例: // PHP_INT_MAX 永久有效 // / 默認(rèn)是當(dāng)前目錄及子目錄有效,我這里改成了整站有效 // .6758591.com 默認(rèn)是當(dāng)前域名,我這里改成了跨子域 setcookie("age",18,PHP_INT_MAX,"/",".6758591.com"); // 增 setcookie("name","Lin"); // 刪 setcookie("name","",0); setcookie("name","",time()-1); // 改 setcookie("name","Bin"); // 查 echo $_COOKIE["name"];
查看(方式很多,擇其一)
session過程分析
瀏覽器,首次請求xxx網(wǎng)站服務(wù)器后,服務(wù)端因session_start()而立即創(chuàng)建新的session文件; 文件名默認(rèn)格式,示例: sess_0l4jphu0c88lm1ka6242po5763 sess_是前綴,后面的字符串是特殊算法生成的具有“唯一隨機(jī)性”的串兒; 后通過http協(xié)議的響應(yīng)頭,setcookie去回傳PHPSESSID=0l4jphu0c88lm1ka6242po5763; 瀏覽器收到響應(yīng)內(nèi)容后,將PHPSESSID作為身份信息,保存在cookie,默認(rèn)是會話周期. 后來的每次請求都會,攜帶所有的cookie信息(包括身份信息)提交給服務(wù)器腳本; 服務(wù)端收到請求后,比對查找是否有對應(yīng)的session文件; 如果有的話,則讀取到超全局變量$_SESSION中; 否則會新建session文件,以進(jìn)行$_SESSION操作. 備注:session文件也不是一直存在于服務(wù)端的,默認(rèn)存活時間是24min。 默認(rèn)以文件形式存儲,也可存儲在DB中.但讀取操作還是要消耗服務(wù)器資源的。 由php.ini中可的相關(guān)參數(shù)決定存活時間、啟動gc的幾率、session_name命名及存儲位置等。
使用
/*session*/ //存儲的數(shù)據(jù)類型,幾乎支持php的所有數(shù)據(jù)類型 //當(dāng)前頁面開啟session會話機(jī)制.(只要用到的頁面,就一定要首先開啟.) session_start(); //增/改 $_SESSION["name"] = "Lin"; //刪 unset($_SESSION["name"]); //刪除單個session數(shù)據(jù) $_SESSION = []; //刪除全部session數(shù)據(jù) session_destroy(); //連session文件都銷毀了 // 查 echo $_SESSION["name"];
查看(windows下本地服務(wù)器,且未修改php.ini中相關(guān)配置參數(shù)時)
如果禁用了cookie,那么session如何使用
cookie和session本質(zhì)上都能以數(shù)據(jù)持久化存儲的方式解決身份識別問題,那么cookie被禁掉后,本地就沒有瀏覽器身份信息隨著請求發(fā)到服務(wù)器了,服務(wù)器自然就不能識別,從而不斷的生成新的session文件。這是不可取的。 解決的關(guān)鍵是,要確保對同一個session文件的操作。那么在sesion_start()前就得指定session_id();
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/25907.html
摘要:知乎專欄前端給不了解前端的同學(xué)講前端掘金前端夠得到安全跨站請求偽造掘金前端面試問題持續(xù)更新掘金向核心貢獻(xiàn)代碼的六個步驟基于的仿音樂移動端個人文章用構(gòu)建組件網(wǎng)易嚴(yán)選感受開發(fā)已完結(jié)掘金英文 2017-09-23 前端日報(bào) 精選 [譯] 網(wǎng)絡(luò)現(xiàn)狀:性能提升指南前端夠得到Web安全3--點(diǎn)擊劫持/UI-覆蓋攻擊React, Jest, Flow, Immutable.js將改用MIT開源協(xié)議N...
摘要:對,并不是非阻塞的快,而且開發(fā)的快,極適合做前后端分離以傳遞數(shù)據(jù)的模式。的選擇既不簡潔又缺乏一致性,但建表重連包裝連接池這些總得有人做。縮短重連時間因?yàn)槌瑫r時間比的通用配置要短,所以的重連時間也必須同步,否則會報(bào)的數(shù)據(jù)庫錯誤。 對程序員來說,新浪云SAE無疑是國內(nèi)最好的PaaS平臺,實(shí)名認(rèn)證和綁定移動端得到的免費(fèi)云豆,可以讓你在做出一款能抬起頭的應(yīng)用之前不愁吃喝。 所以這一年里做過的網(wǎng)...
摘要:所以呢解決這個問題也很簡單,就是對提交的內(nèi)容進(jìn)行或者其他形式的編碼,在服務(wù)器端進(jìn)行解碼,即可解決。項(xiàng)目地址完結(jié)撒花 NodeJs開發(fā)個人博客項(xiàng)目 預(yù)覽地址:http://baijiawei.top GitHub地址:https://github.com/bjw1234/blog 需要安裝的模塊 body-parser 解析post請求 cookies 讀寫cookie express...
閱讀 2755·2019-08-30 15:53
閱讀 521·2019-08-29 17:22
閱讀 1040·2019-08-29 13:10
閱讀 2307·2019-08-26 13:45
閱讀 2751·2019-08-26 10:46
閱讀 3202·2019-08-26 10:45
閱讀 2504·2019-08-26 10:14
閱讀 467·2019-08-23 18:23