官方文档之Cookie

cookie:其实相当于服务端给我们的一个临时身份令牌,当我们登录的时候,携带的帐号、密码等信息服务器收到之后,就会给你这个令牌,以后你要访问服务端的数据的时候,只要拿着这个令牌去就可以访问到服务端端数据了(到这里你肯定会疑问,我怎么好像没有设置这个cookie令牌,登录成功了后面的功能都可以操作了,其实这个步骤iOS系统以及为我们做了,在登录成功之后,系统会把返回的cookie令牌保存起来,当你操做app其他功能的时候,系统会自动把cookie添加到请求头里面去的,所有你才能操作成功,但是问题来了,这个身份令牌是iOS系统保存的,它有个过期时间,过期了之后,发送网络请求的时候是不会带在请求头里面的,这时候你再去操作的时候,服务端找不到你的令牌,所有的功能都会出现问题,怎么解决后面篇讲解)。


苹果文档翻译内容:

由于HTTP协议的无状态性,客户端通常使用的持久化存储数据都是来自于携带cookies的URL网络请求(系统默认会每次在发送网络请求的时候在请求头里面设置cookie,我们通常没有管理他,通过Charles软件抓包可以明显的看到请求头里面多了个Set-cookie 参数)。URL Loading System 提供了接口来创建管理cookies,提供了将cookie作为HTTP请求的一部分发送的接口(系统默认也会去取cookie,也可以手动设置cookie,还可以设置让系统不默认发送cookie),同时也提供了接口来接收cookie党web服务器响应之后(在响应头里面会有个Set-cookie字段,对应的值是服务端设置之后反回来的cookie)。


NSHTTPCookie类概括了cookie ,这类提供了访问器来访问cookie的很多特性(attributes),提供了从HTTP cookie头转换到NSHTTPCookie实例对象的方法,同时也提供了从NSHTTPCookie 实例到NSURLResquest 对象请求头的方法。URL loading system 会为NSURLResquest对象自动发送任何合适的cookie(每个url 请求都会返回cookie,系统自动保存起来的,当你发送请求的时候,系统会自动根据对应的url 找到以前请求过保存起来的cookie,然后放在请求头里面发送给服务端,注意这个系统保存的cookie会过期的,过期之后请求头里面是不会设置cookie信息的,这会导致应用的很多功能出现不知所以的问题(主要是看后台那边怎么验证的,如果对应的功能接口需要保证请求头里面有cookie的信息的话,app的功能使用就会出现问题)),除非你表明不发送cookie,否则系统都会默认去获取cookie并发送,同时,cookie会在被返回的NSURLResponse对象里面,当然了,这个cookie是否被接受依赖于设置的cookie接收策略。


该NSHTTPCookieStorage类提供用于管理所有应用程序共享NSHTTPCookie对象集合的接口(所有通过它的到的cookies是所有应用的,但是在iOS app中是不共享的)。


NSHTTPCookieStorage类允许应用设置cookie接收策略,这个策略控制是否cookie总是被接收、从不接收,或者特定域名的。

注意:在一个app里面改变了cookie的接收策略会影响其他所有的正在运行的app的cookie 接收策略。(NSHTTPCookieStorage类 是跨越app的)。

当其他的app修改了cookie 存储或者接收策略之后,NSHTTPCookieStorage类会通过发送NSHTTPCookieManagerCookiesChangedNotification和NSHTTPCookieStorageAcceptPolicyChangedNotification通知 来通知app。



后面篇讲解cookie身份令牌过期导致应用功能失效问题的解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moxi_wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值