ios htttp網絡請求cookie的讀取與寫入(NSHTTPCookieStorage)

轉載:天狐博客 » ios htttp網絡請求cookie的讀取與寫入(NSHTTPCookieStorage)

當你訪問一個網站時,NSURLRequest都會幫你主動記錄下來你訪問的站點設置的cookie,如果 Cookie 存在的話,會把這些信息放在 NSHTTPCookieStorage 容器中共享,當你下次再訪問這個站點時,NSURLRequest會拿着上次保存下來了的cookie繼續去請求。
同樣適用於ASIHTTPRequest,AFNetworking, Webview等,cookie常用於一些基於認證的網絡請求

認識下NSHTTPCookieStorage
NSHTTPCookieStorage 實現了一個管理cookie的單例對象(只有一個實例),每個cookie都是NSHTTPCookie類的實例,最爲一個規則,cookie在所有應用之間共享並在不同進程之間保持同步。Session cookie(一個isSessionOnly方法返回YES的cookie)只能在單一進程中使用。

Cookie
Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器或者客戶端),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站地址時就發送該Cookie給服務器

HTTP header
HTTP header中包含HTTP請求與響應的操作參數. header屬性定義了所傳輸數據的各種特性. header屬性以屬性名開始,以冒號結尾,最後是屬性值.屬性名及值會因應用的不同

一.iOS htttp網絡請求cookie的讀取與寫入:

1.原生NSURLConnection寫法

2.AFNetworking 寫法

二.清空cookie

三.手動設置Cookie 手動設置的Cookie不會自動持久化到沙盒

request還可以這樣設置個cookie

四.Cookie的持久化存儲

1.服務器端設置Cookie,以PHP爲例

語法

參數 描述
name 必需。規定 cookie 的名稱。
value 必需。規定 cookie 的值。
expire 可選。規定 cookie 的有效期。
path 可選。規定 cookie 的服務器路徑。
domain 可選。規定 cookie 的域名。
secure 可選。規定是否通過安全的 HTTPS 連接來傳輸 cookie。

如果服務器設置了Cookie失效時間expiresDate ,sessionOnly:FALSE會被持久化到文件中,kill掉後系統自動保存,下次啓動app會自動加載.binarycookies中的Cookies,以下是一條Cookie輸出

持久化到了文件中,地址是 沙盒的 /Library/Cookies/org.skyfox.AFNetworking-demo.binarycookies

ios app cookie存儲目錄

使用BinaryCookieReader.py腳本 解析 org.skyfox.AFNetworking-demo.binarycookies 結果如下

64146D7E-45E9-475D-9D5B-3DF6D9DB58E1

2.app端手動存儲Cookie

如果沒設置Cookie失效時間expiresDate:(null),sessionOnly:true,kill掉後系統不會自動保存Cookie,如果想持久化Cookie 模仿瀏覽器存住Cookie,使用NSUserDefaults存下即可,以下是一條Cookie輸出

手動保存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章