瀏覽器和服務(wù)器采用http無狀態(tài)的通訊,為了保持客戶端的狀態(tài),使用session來達(dá)到這個(gè)目的。然而服務(wù)端是怎么樣標(biāo)示不同的客戶端或用戶呢?
這里我們可以使用生活中的一個(gè)例子,假如你參加一個(gè)晚會(huì),認(rèn)識(shí)了很多人,你會(huì)采取什么方式來區(qū)分不同的人呢!你可能根據(jù)臉型,也有可能根據(jù)用戶的名字,
或者人的身份證,即采用一個(gè)獨(dú)一無二的標(biāo)示。在session機(jī)制中,也采用了這樣的一個(gè)唯一的session_id來標(biāo)示不同的用戶,不同的是:瀏覽器每次請(qǐng)求都會(huì)帶上
由服務(wù)器為它生成的session_id.
簡(jiǎn)單介紹一下流程:當(dāng)客戶端訪問服務(wù)器時(shí),服務(wù)器根據(jù)需求設(shè)置session,將會(huì)話信息保存在服務(wù)器上,同時(shí)將標(biāo)示session的session_id傳遞給客戶端瀏覽器,
瀏覽器將這個(gè)session_id保存在內(nèi)存中(還有其他的存儲(chǔ)方式,例如寫在url中),我們稱之為無過期時(shí)間的cookie。瀏覽器關(guān)閉后,這個(gè)cookie就清掉了,它不會(huì)存在用戶的cookie臨時(shí)文件。
以后瀏覽器每次請(qǐng)求都會(huì)額外加上這個(gè)參數(shù)值,再服務(wù)器根據(jù)這個(gè)session_id,就能取得客戶端的數(shù)據(jù)狀態(tài)。