Android 中cookie的處理詳解
android 客戶端 Cookie處理
Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
Cookie最早是網(wǎng)景公司的前雇員Lou Montulli在1993年3月的發(fā)明。
發(fā)起
Cookie是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器,客戶端),瀏覽器會(huì)將Cookie的key/value保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站時(shí)就發(fā)送該Cookie給服務(wù)器(前提是瀏覽器設(shè)置為啟用cookie)。Cookie名稱和值可以由服務(wù)器端開(kāi)發(fā)自己定義,對(duì)于JSP而言也可以直接寫(xiě)入jsessionid,這樣服務(wù)器可以知道該用戶是否合法用戶以及是否需要重新登錄等。
用途
服務(wù)器可以利用Cookies包含信息的任意性來(lái)篩選并經(jīng)常性維護(hù)這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookies最典型的應(yīng)用是判定注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會(huì)得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡(jiǎn)化登錄手續(xù),這些都是Cookies的功用。另一個(gè)重要應(yīng)用場(chǎng)合是“購(gòu)物車(chē)”之類處理。用戶可能會(huì)在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁(yè)面中選擇不同的商品,這些信息都會(huì)寫(xiě)入Cookies,以便在最后付款時(shí)提取信息。目前Cookies 最廣泛的是記錄用戶登錄信息,這樣下次訪問(wèn)時(shí)可以不需要輸入自己的用戶名、密碼了——當(dāng)然這種方便也存在用戶信息泄密的問(wèn)題,尤其在多個(gè)用戶共用一臺(tái)電腦時(shí)很容易出現(xiàn)這樣的問(wèn)題。
生存周期
Cookie可以保持登錄信息到用戶下次與服務(wù)器的會(huì)話,換句話說(shuō),下次訪問(wèn)同一網(wǎng)站時(shí),用戶會(huì)發(fā)現(xiàn)不必輸入用戶名和密碼就已經(jīng)登錄了(當(dāng)然,不排除用戶手工刪除Cookie)。而還有一些Cookie在用戶退出會(huì)話的時(shí)候就被刪除了,這樣可以有效保護(hù)個(gè)人隱私。
Cookie在生成時(shí)就會(huì)被指定一個(gè)Expire值,這就是Cookie的生存周期,在這個(gè)周期內(nèi)Cookie有效,超出周期Cookie就會(huì)被清除。有些頁(yè)面將Cookie的生存周期設(shè)置為“0”或負(fù)值,這樣在關(guān)閉瀏覽器時(shí),就馬上清除Cookie,不會(huì)記錄用戶信息,更加安全。
Android 中Cookie 的操作:
邏輯:Cookie是由服務(wù)器生成的??蛻舳说谝淮蜗蚍?wù)器發(fā)送Http請(qǐng)求時(shí),由于沒(méi)有Cookie,在Http請(qǐng)求頭中即Header中不包含"Cookie"。此時(shí)在服務(wù)器返回的相應(yīng)(HttpResponse)中會(huì)多一個(gè)字段"Set-Cookie",此字段的值就是服務(wù)器生成的Cookie值,下次再由此客戶端程序訪問(wèn)該服務(wù)器時(shí),就可以把該Cookie值放入Http請(qǐng)求頭中。服務(wù)器就會(huì)知道是哪個(gè)用戶再次訪問(wèn)了該服務(wù)器??蛻舳诵枰4嬖揅ookie以此用戶再次訪問(wèn)服務(wù)器時(shí)使用。Cookie會(huì)有一個(gè)失效時(shí)間,客戶端在Cookie失效后再次訪問(wèn)服務(wù)器,服務(wù)器會(huì)返回一個(gè)Cookie失效的狀態(tài)碼(比如403之類的),并在HttpResponse中包含"Set-Cookie"字段,這里面是新的Cookie。客戶端需要做的操作是:1.將新Cookie覆蓋舊的Cookie。2.跳入用戶登錄界面,讓用戶用新的Cookie重新登陸。Cookie 可以保存在SharePreferenced或者Sqlite中。
實(shí)現(xiàn)代碼:
public byte[] doPost(String url, List<NameValuePair> values){ HttpPost post = new HttpPost(url); post.setHeadr("Accept", ""); ... }
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
MVVMLight項(xiàng)目之綁定在表單驗(yàn)證上的應(yīng)用示例分析
這篇文章主要為大家介紹了MVVMLight項(xiàng)目中綁定在表單驗(yàn)證上的應(yīng)用示例及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步除夕快樂(lè),新年快樂(lè)2022-01-01Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法
這篇文章主要介紹了Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法,用idegen來(lái)生成針對(duì)AndroidStudio或IntelliJ?IDEA的Android系統(tǒng)源代碼工程配置文件,需要的朋友可以參考下2022-08-08Android中ScrollView監(jiān)聽(tīng)滑動(dòng)距離案例講解
這篇文章主要介紹了Android中ScrollView監(jiān)聽(tīng)滑動(dòng)距離案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08android實(shí)現(xiàn)視頻的加密和解密(使用AES)
本篇文章主要介紹了android實(shí)現(xiàn)視頻的加密和解密(使用AES),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Android實(shí)現(xiàn)相機(jī)拍攝、選擇、圖片裁剪功能
自定義控件,重寫(xiě)ImageView 功能實(shí)現(xiàn):點(diǎn)擊圓形頭像之后可以實(shí)現(xiàn)相冊(cè)上傳或者開(kāi)啟相機(jī),然后把得到的圖片經(jīng)過(guò)剪裁,把剪裁過(guò)的圖片設(shè)置為頭像的背景圖,需要的朋友可以參考下2016-09-09詳解Android 語(yǔ)音播報(bào)實(shí)現(xiàn)方案(無(wú)SDK)
本篇文章主要介紹了詳解Android 語(yǔ)音播報(bào)實(shí)現(xiàn)方案(無(wú)SDK),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Flutter實(shí)現(xiàn)固定header底部滑動(dòng)頁(yè)效果示例
這篇文章主要為大家介紹了Flutter實(shí)現(xiàn)固定header底部滑動(dòng)頁(yè)效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Android實(shí)現(xiàn)長(zhǎng)按back鍵退出應(yīng)用程序的方法
這篇文章主要介紹了Android實(shí)現(xiàn)長(zhǎng)按back鍵退出應(yīng)用程序的方法,實(shí)例分析了Android按鈕事件的操作技巧,需要的朋友可以參考下2015-05-05Android的HTTP操作庫(kù)Volley的基本使用教程
這篇文章主要介紹了Android的HTTP操作庫(kù)Volley的基本使用教程,包括JSON請(qǐng)求與圖片加載等用法的實(shí)例,需要的朋友可以參考下2016-05-05