摘要:例如要想在多個二級域名中共享,需要設置為頂級域名,這樣就可以在所有二級域名里面或者到這個的值了。頂級域名只能獲取到設置為頂級域名的,設置為其他子級域名的無法獲取。
Cookie和Session詳解 Cookie Cookie只存儲在客服端
Cookie是什么:Cookies是web服務器存放在用戶硬盤的一段文本,Cookies允許一個wen站點在用戶的機器存放一些文本的信息,并可以在以后重新獲取它。這個基于文本的信息存儲著一些“鍵-值”對。Cookie在http瀏覽器里面的使用過程
1.當瀏覽器發送請求時,它會查看你機器上跟域名www.test.com有關的Cookie文件,如果存在同www.test.com有關的 Cookie,瀏覽器就會把相關的Cookie“鍵-值”對數據跟請求一起發送到服務器(),如果不存在同www.test.com有關的 Cookie,則瀏覽器不發送Cookie到服務器。
http協議中,在Request Headers里面通過Cookie:PHPSESSIS=123456發送
2.服務器如果返回Cookie,瀏覽器會把Cookie存儲在域名www.test.com有關的Cookie文件中,提供給下次請求調用
http協議中,在Response Headers里面通過Set-Cookie:PHPSESSIS=123456(名字,值,過期時間,路徑和域)返回
3.當然,不是全部Cookie都會存儲起來,Set-Cookie設置的過期時間
持久性cookie,設置了cookie的時間,以文件方式存在硬盤上
會話cookie,沒有設置cookie時間,cookie的生命周期也就是關閉瀏覽器前就消失,一般不會保存在硬盤,而是保存在內存上
4.所以單純使用Cookie不安全
Cookie其實就是鍵值對存儲在文件中,如果一些用戶名都存儲在里面,只需簡單修改文件里面的用戶名,就可以達到模仿他人登錄,所以相對不安全,當然可以通過其他手段避免,例如加密加鹽
簡單來說,一個請求到達的時候,服務器會先判斷是否帶有Session信息。如果有,則根據Session ID去數據庫中查找是否具有對應的用戶身份信息。此處可能會出現Session失效、非法的Session信息等可能性,那么服務器視同無Ssession信息的情況,重新的產生一個隨機的字符串,并且在Http返回頭中寫入新的Session ID信息。另一者,如果服務器成功獲取了用戶的身份信息則以該身份為請求者提供服務。在http中,客服端的請求里面的session id一般是通過cookie帶過來的,所以Session也依賴于cookie。以php里面Session舉例,session_start()開啟
首先會去獲取客戶端cookie里的session_id,如果不存在,會重新創建一個
根據session_id,取到所有相關的信息,放入$_SESSION全局變量里以供使用
如果寫session,也是根據session_id寫入相關文件,并放入$_SESSION全局變量里以供使用
設置登錄態的過期時間,需要設置session的過期時間以及cookie的過期時間才可以真正生效(ini_set修改)session.cookie_lifetime
這個代表SessionID在客戶端Cookie儲存的時間,默認是0,代表瀏覽器一關閉SessionID就作廢
session.gc_maxlifetime
這個是Session數據在服務器端儲存的時間,如果超過這個時間,那么Session數據就自動刪除
總結一下頂級域名和子級域名之間的cookie共享和相互修改、刪除
頂級域名只能設置domain為頂級域名,不能設置為二級域名或者三級域名等等,否則cookie無法生成
二級域名可以設置domain為二級域名或者頂級域名
總的來說,設置cookie的話只能在本域名下或者domain級別高于自身的域名下才會生效!
二級域名能讀取設置了domain為頂級域名或者自身的cookie,不能讀取其他二級域名domain的cookie。例如:要想cookie在多個二級域名中共享,需要設置domain為頂級域名,這樣就可以在所有二級域名里面或者到這個cookie的值了。
頂級域名只能獲取到domain設置為頂級域名的cookie,domain設置為其他子級域名的無法獲取。
多系統共用登錄態的方法一(cookie共享)在頂級域名下開啟session
使用同一個session_id
必須是二級域名,不同域名不適合使用
多系統共用登錄態的方法一(SSO,限制沒這么多)SSO單點登錄/登出
瀏覽器訪問單點登錄的網站,如果session存在就返回數據,如果不存在就跳轉到cas server(一個多帶帶域名的服務)
如果有已經登錄過,通過檢測cookie,cas server就會302跳轉通過url返回Ticket(Ticket是隨機且唯一)到網站,如果沒有登錄過,就跳轉到cas server登錄頁面進行登錄,登錄成功設置cookie,然后302跳轉返回Ticket到網站,同時cas server會存儲改Ticket、cookie和網站host的對應關系。
網站接收到Ticket后通過cas server提供的校驗url去校驗Ticket,cas server確認后返回成功,網站寫入當前域名的sessionid
當用戶再訪問網站的時候,就會判斷當前session是否登錄
更多內容請關注微信公眾“p12310086”,一個程序員和hr一起運營的公眾號!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28281.html
摘要:協議是無狀態的,一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換建立新的連接,也就是說,服務器無法跟蹤會話。而和就是用與解決這種問題。值得一提的是是建立在的基礎上創建的。注意在的文件中,設置了的生命周期最長為分鐘。 在將cookie 和 session 之前需要先理解什么是會話會話: 用戶打開一個瀏覽器,點擊多個超鏈接,訪問多個web資源,然后關閉瀏覽器,整個過程稱為一個...
摘要:目前大多數的應用都是用實現跟蹤的。的安全性一般,他人可通過分析存放在本地的并進行欺騙。在安全性第一的前提下,選擇更優。考慮到減輕服務器性能方面,應當適時使用。因此,維持一個會話的核心就是客戶端的唯一標識,即。 showImg(https://segmentfault.com/img/bV8riL?w=800&h=444); 在技術面試中,經常被問到說說Cookie和Session的區別...
摘要:什么是用來存儲客戶端的一小段文本是一門客戶端的技術因為是存儲在客戶端瀏覽器中的是為了實現客戶端與服務器端之間的狀態的保持技術,不安全,不要使用存儲敏感信息比如登錄狀態和登錄信息一些敏感的數據應該存儲在服務器端的值從哪里來的當你訪問一個網站這 什么是cookie, 用來存儲客戶端的一小段文本是一門客戶端的技術 因為cookie是存儲在客戶端瀏覽器中的是為了實現 客戶端與服務器端之間的狀態...
摘要:所謂的無連接就是服務器收到了客戶端的請求之后,響應完成并收到客戶端的應答之后,即斷開連接。從而節省傳輸時間。協議對事務的處理沒有記憶能力。這種方式某種方面上講解放了服務器,但是卻不利于客戶端與服務器的連接。 session與cookie是什么? session與cookie屬于一種會話控制技術.常用在身份識別,登錄驗證,數據傳輸等.舉個例子,就像我們去超市買東西結賬的時候,我們要拿出我...
摘要:由于是存在客戶端上的,所以瀏覽器加入了一些限制確保不會被惡意使用,同時不會占據太多磁盤空間。簽名是對前兩部分的簽名,防止數據被篡改。的作用最開始的初衷是為了實現授權和身份認證作用的,可以實現無狀態,分布式的應用授權。 前言 無狀態的HTTP協議 很久很久之前, Web基本都是文檔的瀏覽而已。既然是瀏覽, 作為服務器, 不需要記錄在某一段時間里都瀏覽了什么文檔, 每次請求都是一個新的HT...
閱讀 1628·2021-10-12 10:11
閱讀 3746·2021-09-03 10:35
閱讀 1438·2019-08-30 15:55
閱讀 2122·2019-08-30 15:54
閱讀 991·2019-08-30 13:07
閱讀 1003·2019-08-30 11:09
閱讀 567·2019-08-29 13:21
閱讀 2644·2019-08-29 11:32