十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
在講Cookie + Session 登入前,我們應(yīng)該先來了解一下,為什么會有這兩個東西:
成都創(chuàng)新互聯(lián)2013年至今,先為丹棱等服務(wù)建站,丹棱等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為丹棱企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。因為HTTP 是一種無狀態(tài) (stateless) 的協(xié)議,所以每次請求都是獨立的,伺服器端無法判斷本次請求和上一次請求是否來自同一個使用者,進(jìn)而也就無法判斷使用者的登入狀態(tài)。
那你可能會好奇,那為什么要無狀態(tài) (stateless) 的協(xié)議?你要想如果我們需要存儲大量的使用者狀態(tài),就會造成很大的伺服器端維護(hù)成本,所以如果可以客戶端、伺服器、資料庫都不去儲存使用者狀態(tài),那不是很棒?所以 無狀態(tài) (stateless) 的協(xié)議 就誕生了
這邊舉個網(wǎng)路上普遍的例子:Cookie 就是會員卡,瀏覽器可以透過Cookie 去知道使用者狀態(tài),就好像會員卡能知道你的購買記錄一樣
簡單來說,就是伺服器透過 Header 的屬性Set-Cookie,把使用者的狀態(tài)紀(jì)錄成儲存在使用者電腦里的Cookie,而瀏覽器在每一次發(fā)送請求時,都在 Header 中設(shè)定 Cookie 屬性,把 Cookie 自動帶上,伺服器就能藉由檢視 Cookie 的內(nèi)容,得知瀏覽器使用者的狀態(tài)
前面有提到 Header 能夠透過 Set-Cookie 把使用者的狀態(tài)紀(jì)錄成儲存在使用者電腦里的 Cookie 那我們現(xiàn)在來看一下Set-Cookie 的內(nèi)容跟一些可客制化的屬性:
domain:Cookie的有效domain(如果未設(shè)定,就會自動綁在執(zhí)行Set-Cookie 的domain 下)
path:可以指定 Cookie 只在特定路徑下生效,未設(shè)定預(yù)設(shè)為'/'
Max-Age:有效期限,單位是秒;當(dāng)數(shù)值為正數(shù)時有效,負(fù)數(shù)時為本次Session 有效;0 為刪除Cookie
Expires:同上,只是指定的是時間點(如果沒有明確設(shè)定的話,就是在關(guān)閉瀏覽器前失效)
secure:安全性,當(dāng)這個屬性被設(shè)為true 時,此Cookie 就只會在「安全的協(xié)議」下傳輸,通常為HTTPS
HttpOnly:只能在網(wǎng)路傳輸中使用,當(dāng)設(shè)為true 時,此Cookie 就無法在任何JavaScript 程式碼中取得
// 取得當(dāng)前的 cookie
console.log(document.cookie)
// 寫入 cookie,myName 欄位寫入 jan
document.cookie = 'myName=jan'
// 寫入 cookie,并加入過期時間
document.cookie="myName=jan; expires=Mon, 04 Dec 2017 08:18:32 GMT; path=/"
// 寫入 cookie,設(shè)定 10 秒后失效
Cookie + Session 登入
扯了這么多,回到登入部分,使用Cookie + Session 登入的流程大概是:
client端發(fā)送一個http request 到server 端
server 接到request 后,建立一個session,并傳送一個http response 回client端,而這個response 包括Set-cookie 的header,里面存有sessionID。
當(dāng)client端發(fā)出第二次request 后,若server 給了Set-cookie,瀏覽器會自動在request 中加入cookie。
server 接受request,解析并驗證cookie,若驗證成功就回傳response 給client 端;失敗則回除錯誤碼。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧