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,这样后面登录后的请求就可以成功了!
第一次在简书上发表自己的文章,略紧张~