前言
會話(Session)跟蹤是Web程序中常用的技術(shù)宇姚,用來跟蹤用戶的整個會話笨使。常用的會話跟蹤技術(shù)是Cookie與Session。Cookie通過在客戶端記錄信息確定用戶身份拯辙,Session通過在服務(wù)器端記錄信息確定用戶身份裳擎,在移動開發(fā)中Cookie越來越多用到了Cookie,覺得有必要去學(xué)習。
什么是Cookie
Cookie意為“甜餅”斯碌,是由W3C組織提出一死,最早由Netscape社區(qū)發(fā)展的一種機制。目前Cookie已經(jīng)成為標準傻唾,所有的主流瀏覽器如IE投慈、Netscape、Firefox冠骄、Opera等都支持Cookie逛裤。由于HTTP是一種無狀態(tài)的協(xié)議,服務(wù)器單從網(wǎng)絡(luò)連接上無從知道客戶身份猴抹。怎么辦呢带族?就給客戶端們頒發(fā)一個通行證吧,每人一個蟀给,無論誰訪問都必須攜帶自己通行證蝙砌。這樣服務(wù)器就能從通行證上確認客戶身份了。這就是Cookie的工作原理跋理。
Cookie實際上是一小段的文本信息择克。客戶端請求服務(wù)器前普,如果服務(wù)器需要記錄該用戶狀態(tài)肚邢,就使用response向客戶端瀏覽器頒發(fā)一個Cookie。客戶端瀏覽器會把Cookie保存起來骡湖。當瀏覽器再請求該網(wǎng)站時贱纠,瀏覽器把請求的網(wǎng)址連同該Cookie一同提交給服務(wù)器。服務(wù)器檢查該Cookie响蕴,以此來辨認用戶狀態(tài)谆焊。服務(wù)器還可以根據(jù)需要修改Cookie的內(nèi)容。
iOS下Cookie的用法
iOS中主要用到兩個類對Cookie進行操作:
- NSHTTPCookie:在iOS中使用NSHTTPCookie類封裝一條Cookie,通過NSHTTPCookie的方法讀取到cookie的通用屬性
-
NSHTTPCookieStorage:單件類提供了管理所有NSHTTPCookie對象的接口浦夷,在OS X里,cookie是在所有程序中共享的辖试,而在iOS中,cookie只當當前應(yīng)用中有效
如果想深入了解Cookie,大家可以參考下面兩篇博客:
iOS cookie的三種逆天用法 介紹Cookie的三個用法(獲取劈狐,修改罐孝,保存),還有代碼可以參考
iOS中Cookie介紹 詳細介紹了NSHTTPCookie和NSHTTPCookieStorage兩個類的具體用法
項目中用到的Cookie
項目中,當用戶登錄后,后臺返回一個authKey,需要我把authKey寫進Cookie獲得登陸后請求的權(quán)限肥缔。由于對Cookie的不熟悉肾档,一下子懵逼了,一開始還以為要在Cookie中增加一個鍵值對辫继,可惜怎么設(shè)置都不成功,后來發(fā)現(xiàn)Cookie可以做到上面的三種用法俗慈,沒法做到修改姑宽,最多新建一個替換原來的Cookie。最后發(fā)現(xiàn)自己再創(chuàng)建一個Cookie就行了闺阱,明白了才知道那么簡單E诔怠!酣溃!代碼如下:
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@"authKey" forKey:NSHTTPCookieName];
[cookieProperties setObject:@"服務(wù)器ip" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"服務(wù)器ip" forKey:NSHTTPCookieCommentURL];
[cookieProperties setObject:aut.authKey forKey:NSHTTPCookieValue];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
設(shè)置好之后保存好瘦穆,下次請求就會帶上自己設(shè)置的Cookie,這樣后面登錄后的請求就可以成功了!
第一次在簡書上發(fā)表自己的文章赊豌,略緊張~