3.4.2 操纵 Cookie

Cookie 向服务器提供了追踪会话状态的能力, 同时又无须维持客户端瑟服务器之间的连接.
在浏览器客户端, Cookie 值是由服务器通过请求提供的, 然后被放到随后的请求中. 

name - Cookie 的名字, 从同一 DNS 域返回的所有 Cookie 名都是唯一的. 只有 name 和 value 这两个属性才会在后续的请求中发送给服务器.

value - 由向服务器发送的下一请求返回的值

domain - 后续请求在 Cookie 中包含的 DNS 域. 比如, 拥有域值.domain1.col 的 Cookie 不应该返回给.domain2.com . 如果省略掉, 那么客户端就会将 URL 的主机名当作域. 如果域的最前面是个圆点(.), 那么 Cookie 就会返回给发送到该域及其子域的任何请求. 如果没有最前面的圆点, 那么 Cookie 就只会包含在发送给该域而非其子域的请求中.

path - path 限制发送给请求的 Cookie 都是针对指定的 URL 路径. 如果与 DNS 域搭配使用, 那么 path 属性就可以限制只会将 Cookie 发送给服务器上有限且精确的 URL 集合.

Expiration Date - Cookie 不再随请求发送的日期与时间, Cookie 会在这个时间点从客户端存储中删除

Session Only - 指定 Cookie 是在当前浏览器会话时间内返回还是一直持续到过期日期, 以二者之间先到的时间为准. 在 iOS 应用中, 会话指的是 OS 加载应用到终止应用之间的应用生命周期.

Secure - 指定 Cookie 只会用在 HTTPS 连接而非 HTTP 连接上

Comment - 用于向用户说明 Cookie 目的的注释值

Comment URL - URL 值, 向用户提供了一个 HTML 文档, 用于说明 Cookie 的目的

HTTP Only - 指示器, 告诉客户端不要与 JavaScript 应用共享 Cookie 以防止跨站脚本攻击

Version - Cookie 遵循的 HTTP Cookie 规范版本

URL 加载设施会自动处理所有 HTTP 与 HTTPS 请求的 Cookie. 会将返回的 Cookie 保存在响应中, 然后按照 Cookie 处理规则将其添加到随后的请求中. 只有在 Cookie 的 domain 属性所提供的 DNS 域中的主机才会返回 Cookie, 方便的是, 非会话 Cookie 值会在应用启动过程中进行持久化. 因此, 如果应用检索到 Cookie, 然后又终止了, 那么检索到的 Cookie 依然会出现在应用随后的调用中. URL 加载系统只会在 Cookie 没有过期并且针对目标域是有效的情况下才会发送 Cookie

URL 加载系统提供了两个重要对象以管理 Cookie : NSHTTPCookie 与 NSHTTPCookieStorage. NSHTTPCookie 通过所有必要以及可选属性来表示 Cookie. NSHTTPCookieStorage 则是单例对象, 用于管理应用的 Cookie. 注意, 与所有其他的应用数据一样, NSHTTPCookieStorage Cookie也是沙箱的, 无法在应用间共享

NSHTTPCookieStorage 可以控制保存哪些 Cookie, 不过在默认情况下, 会存储响应中返回的所有 Cookie, 无论 Cookie 的域是否匹配请求的域. 通过使用 Cookie 接受策略, 代码可以控制保存 Cookie 的程度.

存储策略值如下所示:

NSHTTPCookieAcceptPolicyAlways - 这是默认值, 表示任何返回的 Cookie 都应该被保存下来
NSHTTPCookieAcceptPolicyNever - 这个值表示不应该存储 Cookie
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain - 该策略告诉 NSHTTPCookieStorage 对象只保存域值与请求域相匹配的 Cookie
如下代码片段会阻止应用保存 Cookie.
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];

对每个请求停止使用自动化的 Cookie 处理, setHTTPShouldHandleCookies:

1. 从响应中获取 Cookie 


获取 Cookie


2. 删除 Cookie


删除所有 Cookie


根据名字来删除 Cookie

deleteCookie:url: 方法接收两个参数, 分别是待删除的 Cookie 名字以及 URL(请求发出后返回 Cookie 的 URL). 确定针对某个域返回哪些 Cookie 会考虑该域的全局 cookies 以及特定主机的 Cookie. 


Cookie 域映射

3. 创建 Cookie

创建一个 Cookie, 然后将其添加到请求中

头信息(newHeaders)会被放到 HTTP 请求中以表示 Cookie. 接下来会使用包含 Cookie 信息的新头替换掉默认的头内容. 如果代码需要添加其他头信息, 那么需要在调用 setAllHTTPHeaderFieldss: 之前将其添加到 newHeaders 字典中.

将 Cookie 添加到 NSHTTPCookieStoreage 管理, 这会将 Cookie 添加到随后所有的请求中

与上一个示例一样, 代码首先也要创建 Cookie, 然后将其存储到应用的 Cookie 存储中. 请记住, 如果 Cookie 存储接受策略有限制, 那么 Cookie 可能不会被存储进去. 存储完 Cookie 之后, 新的请求在开始执行时会自动将其从 Cookie 存储中取出来


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容