国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

cookie與session詳解

SwordFly / 3175人閱讀

摘要:所謂的無連接就是服務(wù)器收到了客戶端的請求之后,響應(yīng)完成并收到客戶端的應(yīng)答之后,即斷開連接。從而節(jié)省傳輸時(shí)間。協(xié)議對(duì)事務(wù)的處理沒有記憶能力。這種方式某種方面上講解放了服務(wù)器,但是卻不利于客戶端與服務(wù)器的連接。

session與cookie是什么?

session與cookie屬于一種會(huì)話控制技術(shù).常用在身份識(shí)別,登錄驗(yàn)證,數(shù)據(jù)傳輸?shù)?舉個(gè)例子,就像我們?nèi)コ匈I東西結(jié)賬的時(shí)候,我們要拿出我們的會(huì)員卡才會(huì)獲取優(yōu)惠.這時(shí)候,我們怎么識(shí)別這個(gè)會(huì)員卡真實(shí)有效的呢?當(dāng)我們將會(huì)員號(hào)給到收銀員,收銀員根據(jù)我們提供的會(huì)員號(hào),輸入到系統(tǒng)中,系統(tǒng)根據(jù)這個(gè)會(huì)員號(hào)去查詢,如果查詢到了就證明這個(gè)會(huì)員號(hào)是真實(shí)存在的.這里的會(huì)員號(hào)就好比cookie與session.會(huì)員系統(tǒng)就好比服務(wù)器端,收銀員就好比客戶端.

為什么會(huì)用到session與cookie呢?

根據(jù)上述的例子,我們知道session與cookie是可以干什么的了,那為什么必須用這個(gè)來實(shí)現(xiàn)呢?這里就有必要了解一下http應(yīng)用傳輸協(xié)議的特點(diǎn)了。由于http協(xié)議是無狀態(tài)的,即瀏覽器去請求了一個(gè)網(wǎng)頁,這時(shí)候就是一個(gè)http請求,當(dāng)服務(wù)端接收到請求之后,返回客戶端需要的數(shù)據(jù),在這過程中瀏覽器與服務(wù)器是建立了一個(gè)連接的。但是當(dāng)服務(wù)端返回?cái)?shù)據(jù),客戶端收到數(shù)據(jù)之后,他們的這種連接關(guān)系就斷開了。下次瀏覽器再去發(fā)送請求的時(shí)候,又是重新建立一個(gè)連接,這兩個(gè)鏈接沒有任何關(guān)系。試想一下,當(dāng)我們登錄一個(gè)商場系統(tǒng)的時(shí)候,進(jìn)入首頁做了登錄操作,但是我們下單或者加入購物車的時(shí)候,還需要登錄,每訪問一個(gè)頁面就要登錄,是不是很繁瑣同時(shí)也是很不科學(xué)的,萬一我們加入購物車的商品,我們點(diǎn)擊下單了,下單頁面要登錄而且還無法正確的反饋出你下單時(shí)的那些商品.

Http特點(diǎn)

1.http協(xié)議支持客戶端/服務(wù)端模式,也是一種請求/響應(yīng)模式的協(xié)議。
2.無連接。所謂的無連接就是服務(wù)器收到了客戶端的請求之后,響應(yīng)完成并收到客戶端的應(yīng)答之后,即斷開連接。限制每次的連接只處理一次請求。從而節(jié)省傳輸時(shí)間。
3.無狀態(tài)。http協(xié)議對(duì)事務(wù)的處理沒有記憶能力。也就意味著如果需要前面的信息,只能重傳,這無形之中增加數(shù)據(jù)的傳輸量。這種方式某種方面上講解放了服務(wù)器,但是卻不利于客戶端與服務(wù)器的連接。為了彌補(bǔ)這種不足,產(chǎn)生了兩項(xiàng)記錄http狀態(tài)的技術(shù),一個(gè)叫做Cookie,一個(gè)叫做Session,后面我們再細(xì)講它們。
4.簡單快捷:所謂的簡單快捷是指客戶端向服務(wù)器請求服務(wù)時(shí),一般來說只需要傳輸請求方法和路徑,就能進(jìn)行訪問
5.靈活:這里主要指的是客戶端可以通過http協(xié)議傳輸任意類型的數(shù)據(jù)。比如傳輸.jpg文件、.ppt文件等等,只需要設(shè)定content-type就可以進(jìn)行傳輸。

Cookie
cookie的基本概念

cookie是遠(yuǎn)程瀏覽器存儲(chǔ)數(shù)據(jù)以此追蹤用戶和識(shí)別用戶的的機(jī)制,從實(shí)現(xiàn)來說,cookie是存儲(chǔ)在客戶端上的一個(gè)數(shù)據(jù)片段。

cookie的運(yùn)行原理與存儲(chǔ)機(jī)制

.運(yùn)行原理
1.客戶端向服務(wù)端發(fā)起一個(gè)http請求.
2.服務(wù)端設(shè)置一個(gè)創(chuàng)建cookie的指令,響應(yīng)給客戶端.
3.客戶端收到服務(wù)端響應(yīng)的指令,根據(jù)指令在客戶端創(chuàng)建一個(gè)cookie.
4.擋下一次請求時(shí),客戶端攜帶這個(gè)cookie向服務(wù)端發(fā)送請求.
.存儲(chǔ)機(jī)制
總的來說,cookie在客戶端存儲(chǔ)的形式有三種,不同的瀏覽器的存儲(chǔ)機(jī)制不同,存的cookie也不同.
1.文件存儲(chǔ).瀏覽器會(huì)針對(duì)不同的域,在磁盤的對(duì)應(yīng)目錄創(chuàng)建一個(gè)多帶帶的文件,來存儲(chǔ)該域下面的cookie值.
2.內(nèi)存存儲(chǔ).當(dāng)瀏覽器關(guān)閉時(shí),該cookie隨之消失.根據(jù)下面的創(chuàng)建語法,當(dāng)我們未設(shè)置過期時(shí)間時(shí)則會(huì)出現(xiàn)這種情況.
3.flash存儲(chǔ).這種存儲(chǔ)方式是永久存儲(chǔ)在磁盤中,即使通過瀏覽器刪除一些數(shù)據(jù)都是無法刪除該方式存儲(chǔ)的cookie,如果需要?jiǎng)h除,可能通過磁盤的方式.

cookie的設(shè)置
Bool setcookie(string $name[, string $values, $expire=0[,string $path[,string $domain[, bool $secure = false[, bool $httpOnly = false]]]]] );
$name:cookie存儲(chǔ)的名稱,必填選項(xiàng).
$values:cookie存儲(chǔ)的值。這里需要注意的是,當(dāng)把該值設(shè)置為false時(shí),客戶端會(huì)嘗試刪除這個(gè)cookie值,因此在要將值這是為true或者false的時(shí)候,我們用另外的值來代替,例如true用1代替,false用0來代替.
$expire:cookie的過期時(shí)間,秒為單位,當(dāng)該值被設(shè)置時(shí),定時(shí)刪除;當(dāng)該值沒有設(shè)置時(shí),該值是永久有效的.該值設(shè)置為小于當(dāng)前時(shí)間時(shí),會(huì)出發(fā)瀏覽器的刪除機(jī)制,會(huì)自動(dòng)刪除cookie.
$path:cookie有效的目錄,默認(rèn)的目錄是"/",即表示當(dāng)前的正個(gè)域名都生效.
$domain:cookie的作用域名,默認(rèn)的是當(dāng)前域名有效,如果需要設(shè)置直接填寫生效的域名即可.需要注意的是IE瀏覽器有長度限制,當(dāng)只有大于5的時(shí)候才會(huì)生效.
$secure:cookie的加密處理,當(dāng)設(shè)置為true的時(shí)候,需要使用HTTPS協(xié)議,才會(huì)生效.
$httpOnly:決定cookie是否只使用http協(xié)議,當(dāng)設(shè)置為1或者true,其他非http協(xié)議是無法操作cookie的。例如我們未設(shè)置的時(shí)候,我們JavaScript是可以對(duì)cookie進(jìn)行設(shè)置的.這樣一定程度上保證了安全性.這種情況需考慮瀏覽器是否支持該配置項(xiàng).

. 設(shè)置cookie的函數(shù)還有setrawcookie()函數(shù),只不過該函數(shù)不會(huì)對(duì)值 進(jìn)行urlencode序列號(hào).
.有時(shí)候,我們可能遇到這種情況,我們在這個(gè)頁面設(shè)置了cookie,但是去刷新頁面獲取cookie,按理說是會(huì)獲取到cookie的,但實(shí)際情況是無法獲取到,這是由于cookie運(yùn)行機(jī)制導(dǎo)致,PHP創(chuàng)建了cookie這個(gè)指令,告訴瀏覽器,你需要執(zhí)行這個(gè)指令了,這時(shí)候?yàn)g覽器才會(huì)去執(zhí)行這個(gè)指令,因此是無法獲取到cookie的.
. 在設(shè)置cookie之前,不能有任何輸出.

// 實(shí)現(xiàn)方式一
setcookie($cookie,"hello,world!", 3600);
// 實(shí)現(xiàn)方式二
header("header("Set-Cookie: testcookie=中文; path=/; domain=.sunphp.org; expires=".gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT",time()+9600));");
// 兩則的作用是一樣的,setcookie是PHP內(nèi)置函數(shù),是對(duì)http協(xié)議的操作封裝。
cookie的獲取
$_COOKIE["$cookeName"];
cookie的應(yīng)用

. 用戶身份識(shí)別
. 數(shù)據(jù)傳輸
. 登錄控制(是否登錄、單點(diǎn)登錄)

cookie跨域設(shè)置

我們都知道,在前端開發(fā)中時(shí)常會(huì)遇到ajax跨域問題,我們解決的方式有很多種,可以參考這篇文章傳送門1,傳送門2,cookie跨域我們可以參考p3p傳輸協(xié)議傳送門

cookie使用的注意事項(xiàng)

.數(shù)量限制,客戶端對(duì)每一個(gè)domian下的cookie是有數(shù)量限制的,不是創(chuàng)建任意數(shù)量就行.
.安全性,根據(jù)上面的創(chuàng)建語法,我們可以得知,當(dāng)我們未設(shè)置$httpOnly值得時(shí)候,非http協(xié)議是可以操作cookie的值的,例如JavaScript通過cookie($cookieName).而且一些抓包工具也是可以抓取到cookie的,還有就是cookie存儲(chǔ)在客戶端的文件中,如果獲取到這個(gè)cookie,也是可以對(duì)cookie做一些操作的.為了防止別人可以拷貝cookie文件,進(jìn)行惡意操作,可以對(duì)cookie進(jìn)行加密處理.
數(shù)據(jù)傳輸:當(dāng)cookie數(shù)量很多,數(shù)據(jù)很大的時(shí)候,其實(shí)對(duì)于帶寬是有消耗的.比較http傳輸都需要帶寬,當(dāng)http傳輸?shù)臄?shù)據(jù)量大了,帶了的帶寬消耗就大.

Session
運(yùn)行原理與存儲(chǔ)機(jī)制

. 運(yùn)行原理
1.客戶端向服務(wù)端發(fā)起請求,建立通信
2.服務(wù)端根據(jù)設(shè)置的session創(chuàng)建指令,在服務(wù)端創(chuàng)建一個(gè)編號(hào)為sessionid的文件,里面的值就是session具體的值(組成部分 變量名 | 類型 :長度:值).
3.服務(wù)端將創(chuàng)建好的sessionid編號(hào)響應(yīng)給客戶端,客戶則將該編號(hào)存在cookie中(一般我們在瀏覽器存儲(chǔ)的調(diào)試欄中會(huì)發(fā)現(xiàn)cookie中有一個(gè)PHPSESSID的鍵,這就是sessionid,當(dāng)然這個(gè)名稱,我可以通過設(shè)置服務(wù)端是可以改變的).
.當(dāng)下一次請求時(shí),客戶端將這個(gè)sessionid攜帶在請求中,發(fā)送給服務(wù)端,服務(wù)端根據(jù)這個(gè)sessionid來做一些業(yè)務(wù)判斷.

.存儲(chǔ)機(jī)制
1.存儲(chǔ)方式.session默認(rèn)是文件存儲(chǔ)的.我們可以通過php.ini的配置來設(shè)置存儲(chǔ)驅(qū)動(dòng)傳送門
2.生命周期.當(dāng)我們未設(shè)置session的生命周期時(shí),當(dāng)瀏覽器關(guān)閉之后存儲(chǔ)在客戶端的phpsessid自動(dòng)消失,因?yàn)樗谴嬖趦?nèi)存,下次建立連接的時(shí)候會(huì)重新創(chuàng)建一個(gè)phpsessid.之前的session,PHP會(huì)自動(dòng)的根據(jù)垃圾回收機(jī)制自動(dòng)刪除.這里我們可以根據(jù)session_set_cookie_params($expire)函數(shù)來設(shè)置一個(gè)生命周期;

session的設(shè)置
session_start();
$_SESSION = $values;

. session_start()設(shè)置之前,不能有任何輸出

session的獲取
$_SESSION["values"];
session的使用場景

. 用戶身份識(shí)別
. 數(shù)據(jù)傳輸
. 登錄控制(是否登錄、單點(diǎn)登錄)

session的注意事項(xiàng)

.安全性,sessionid是按照一定的算法生成,要保證session的值唯一性和隨機(jī)性.
.客戶端禁用cookie,根據(jù)上面session的運(yùn)行原理可以得出,session的存儲(chǔ)于傳送還是依賴于客戶端,因此當(dāng)客戶端禁用cookie時(shí),客戶端是無法保存PHPSESSID的,這時(shí)候可以通過url重寫或者表單來實(shí)現(xiàn)session的傳輸.
.存儲(chǔ)優(yōu)化,按照上面的session創(chuàng)建,所有的session都會(huì)創(chuàng)建在一個(gè)目錄下面,同時(shí)有的無效session在垃圾回收機(jī)制時(shí)間內(nèi)還不會(huì)刪除,當(dāng)一臺(tái)服務(wù)器配置的站點(diǎn)較多時(shí),這時(shí)候會(huì)生成很多的session文件,導(dǎo)致我們讀取速度變慢,我們可以設(shè)置session的存儲(chǔ)目錄級(jí)別,save_path函數(shù).一般大型的項(xiàng)目(如分布式的項(xiàng)目),可以使用其他的存儲(chǔ)方式,如數(shù)據(jù)存儲(chǔ),內(nèi)存存儲(chǔ).

session與cookie的區(qū)別

. session存儲(chǔ)在服務(wù)端,cookie存儲(chǔ)在客戶端.
.cookie的創(chuàng)建指令由服務(wù)端設(shè)置.
.session的sessionid需要客戶端存儲(chǔ).

cookie與session的幾個(gè)誤區(qū)

.客戶端禁止cookie,session無法使用?

使用url重寫或者表單提交可以實(shí)現(xiàn).

.session和cookie的安全性比較,session存在客戶端安全更高?

由于cookie是存在客戶端的,相對(duì)來說安全性是要低一些,不過在創(chuàng)建的時(shí)候可以設(shè)置$httpOnly值.
由于cookie與session是相互關(guān)聯(lián)的,獲取到cookie一定程度上獲取到了session,同樣可以操作session.

.cookie與session是不是在瀏覽器關(guān)閉的時(shí)候會(huì)消失?

這需要查看存儲(chǔ)機(jī)制了。cookie可以存文件,內(nèi)存,flash.存內(nèi)存當(dāng)然瀏覽器關(guān)閉則消失了;session由于垃圾回收機(jī)制,當(dāng)在垃圾回收機(jī)制內(nèi)是不會(huì)刪除的,除非你代碼中顯示的做了刪除操作.

.cookie是存儲(chǔ)在客戶端中,如何增加其安全性?

我們可以在設(shè)置cookie的時(shí)候,增加一些特殊參數(shù),如客戶端信息ip、瀏覽器信息等.

.當(dāng)cookie存在客戶端的文件中,是不是每個(gè)瀏覽器獲取到這個(gè)文件都可以進(jìn)行操作?

要看瀏覽器之間對(duì)cookie的管理機(jī)制是不是一樣.

原文轉(zhuǎn)自

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/29782.html

相關(guān)文章

  • Cookiesession詳解

    摘要:協(xié)議是無狀態(tài)的,一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會(huì)關(guān)閉,再次交換建立新的連接,也就是說,服務(wù)器無法跟蹤會(huì)話。而和就是用與解決這種問題。值得一提的是是建立在的基礎(chǔ)上創(chuàng)建的。注意在的文件中,設(shè)置了的生命周期最長為分鐘。 在將cookie 和 session 之前需要先理解什么是會(huì)話會(huì)話: 用戶打開一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接,訪問多個(gè)web資源,然后關(guān)閉瀏覽器,整個(gè)過程稱為一個(gè)...

    wow_worktile 評(píng)論0 收藏0
  • cookiesession的使用(詳解

    摘要:什么是用來存儲(chǔ)客戶端的一小段文本是一門客戶端的技術(shù)因?yàn)槭谴鎯?chǔ)在客戶端瀏覽器中的是為了實(shí)現(xiàn)客戶端與服務(wù)器端之間的狀態(tài)的保持技術(shù),不安全,不要使用存儲(chǔ)敏感信息比如登錄狀態(tài)和登錄信息一些敏感的數(shù)據(jù)應(yīng)該存儲(chǔ)在服務(wù)器端的值從哪里來的當(dāng)你訪問一個(gè)網(wǎng)站這 什么是cookie, 用來存儲(chǔ)客戶端的一小段文本是一門客戶端的技術(shù) 因?yàn)閏ookie是存儲(chǔ)在客戶端瀏覽器中的是為了實(shí)現(xiàn) 客戶端與服務(wù)器端之間的狀態(tài)...

    liujs 評(píng)論0 收藏0
  • 詳解 CookieSession 關(guān)系和區(qū)別

    摘要:目前大多數(shù)的應(yīng)用都是用實(shí)現(xiàn)跟蹤的。的安全性一般,他人可通過分析存放在本地的并進(jìn)行欺騙。在安全性第一的前提下,選擇更優(yōu)。考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)適時(shí)使用。因此,維持一個(gè)會(huì)話的核心就是客戶端的唯一標(biāo)識(shí),即。 showImg(https://segmentfault.com/img/bV8riL?w=800&h=444); 在技術(shù)面試中,經(jīng)常被問到說說Cookie和Session的區(qū)別...

    microelec 評(píng)論0 收藏0
  • CookieSession詳解

    摘要:例如要想在多個(gè)二級(jí)域名中共享,需要設(shè)置為頂級(jí)域名,這樣就可以在所有二級(jí)域名里面或者到這個(gè)的值了。頂級(jí)域名只能獲取到設(shè)置為頂級(jí)域名的,設(shè)置為其他子級(jí)域名的無法獲取。 Cookie和Session詳解 Cookie Cookie只存儲(chǔ)在客服端 Cookie是什么:Cookies是web服務(wù)器存放在用戶硬盤的一段文本,Cookies允許一個(gè)wen站點(diǎn)在用戶的機(jī)器存放一些文本的信息,并可以在以...

    Little_XM 評(píng)論0 收藏0
  • 詳解 CookieSession,Token

    摘要:由于是存在客戶端上的,所以瀏覽器加入了一些限制確保不會(huì)被惡意使用,同時(shí)不會(huì)占據(jù)太多磁盤空間。簽名是對(duì)前兩部分的簽名,防止數(shù)據(jù)被篡改。的作用最開始的初衷是為了實(shí)現(xiàn)授權(quán)和身份認(rèn)證作用的,可以實(shí)現(xiàn)無狀態(tài),分布式的應(yīng)用授權(quán)。 前言 無狀態(tài)的HTTP協(xié)議 很久很久之前, Web基本都是文檔的瀏覽而已。既然是瀏覽, 作為服務(wù)器, 不需要記錄在某一段時(shí)間里都瀏覽了什么文檔, 每次請求都是一個(gè)新的HT...

    Allen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<