iOS如何寫Cookie

前言

會話(Session)跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。Cookie通過在客戶端記錄信息確定用戶身份,Session通過在服務器端記錄信息確定用戶身份,在移動開發中Cookie越來越多用到了Cookie,覺得有必要去學習。

什么是Cookie

Cookie意為“甜餅”,是由W3C組織提出,最早由Netscape社區發展的一種機制。目前Cookie已經成為標準,所有的主流瀏覽器如IE、Netscape、Firefox、Opera等都支持Cookie。由于HTTP是一種無狀態的協議,服務器單從網絡連接上無從知道客戶身份。怎么辦呢?就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣服務器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。
Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容。

iOS下Cookie的用法

iOS中主要用到兩個類對Cookie進行操作:

  • NSHTTPCookie:在iOS中使用NSHTTPCookie類封裝一條Cookie,通過NSHTTPCookie的方法讀取到cookie的通用屬性
  • NSHTTPCookieStorage:單件類提供了管理所有NSHTTPCookie對象的接口,在OS X里,cookie是在所有程序中共享的,而在iOS中,cookie只當當前應用中有效
    如果想深入了解Cookie,大家可以參考下面兩篇博客:

iOS cookie的三種逆天用法 介紹Cookie的三個用法(獲取,修改,保存),還有代碼可以參考

iOS中Cookie介紹 詳細介紹了NSHTTPCookie和NSHTTPCookieStorage兩個類的具體用法

項目中用到的Cookie

項目中,當用戶登錄后,后臺返回一個authKey,需要我把authKey寫進Cookie獲得登陸后請求的權限。由于對Cookie的不熟悉,一下子懵逼了,一開始還以為要在Cookie中增加一個鍵值對,可惜怎么設置都不成功,后來發現Cookie可以做到上面的三種用法,沒法做到修改,最多新建一個替換原來的Cookie。最后發現自己再創建一個Cookie就行了,明白了才知道那么簡單!!!代碼如下:

     NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
    [cookieProperties setObject:@"authKey" forKey:NSHTTPCookieName];
    [cookieProperties setObject:@"服務器ip" forKey:NSHTTPCookieDomain];
    [cookieProperties setObject:@"服務器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];

設置好之后保存好,下次請求就會帶上自己設置的Cookie,這樣后面登錄后的請求就可以成功了!

第一次在簡書上發表自己的文章,略緊張~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,981評論 19 139
  • 一、基礎知識篇:Http Header之User-AgentUser Agent中文名為用戶代理,是Http協議中...
    iPhone閱讀 15,884評論 0 13
  • HTTP cookie(也稱為web cookie,網絡cookie,瀏覽器cookie或者簡稱cookie)是網...
    留七七閱讀 18,117評論 2 71
  • 我的 Dropbox 上有一個 Markdown 文件,名字叫 “每天寫一點”。這個文件是我在2014年4月22號...
    Qingniu閱讀 964評論 1 39
  • 你曾否在某年某天的某個瞬間突然想念某個人?他不一定曾在你的生命中濃墨重彩的出現過,你卻在某個瞬間突然想念他。 這種...
    閑人慢三閱讀 1,302評論 7 16