您现在的位置是:亿华云 > 热点
Cookie简介
亿华云2025-10-04 03:08:06【热点】0人已围观
简介女主宣言笔者最近看了部分关于Cookie的内容,写了如下文字,给大家分享下。1Cookie是什么CookieCookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行sessio
女主宣言
笔者最近看了部分关于Cookie的简介内容,写了如下文字,简介给大家分享下。简介
1
Cookie是简介什么
Cookie
Cookie,有时也用其复数形式Cookies,简介指某些网站为了辨别用户身份、简介进行session跟踪而储存在用户本地终端上的简介数据(通常经过加密)。
插曲Session
Session
由于HTTP协议是简介无状态的协议,所以当服务端需要记录用户状态时,简介就需要用某种机制来识别具体的简介用户,这个机制就是简介Session。
2
Cookie有什么用
笔者以简书显示内容为繁体还是简介简体为例,来介绍Cookie的简介用处:
(1)当我们使用浏览器访问jianshu.com时,简书服务端不知道浏览器的简介信息,默认情况下,简介浏览器显示内容为“简体”;
(2)当我们设置浏览器显示内容为“繁体”时,浏览器将显示繁体内容;
(3)当我们关闭浏览器,再重新打开浏览器,发现简书的显示内容仍然会是繁体;笔者认为原因是简书服务端可能给浏览器做了一个唯一标识的记录,放置到自己的网站模板Session中,当浏览器重启后,再去服务端请求简书内容,发现当前浏览器需要显示为繁体,便下发了繁体显示内容;
(4)如果没有使用Cookie,因为HTTP协议是无状态的,那么我们设置的显示内容为繁体或者简体后,当我们打开新的页面或关闭浏览器重新打开的时候,之前设置的显示繁体或者简体便不存在了。
3
Cookie的类型
摘自HTTP权威指南
笼统地说,Cookie分为2类:会话Cookie和 持久Cookie
会话Cookie是一种临时Cookie,它记录用户访问长点是的设置和偏好。用户退出浏览器时,会话Cookie就被删除了。
持久Cookie的生存时间更长一些,他们存储在硬盘上,浏览器退出,计算机重启时,他们仍然存在。通常用持久Cookie维护某个用户会周期性访问的站点的配置文件或登录名。云服务器
会话Cookie和持久Cookie之间的唯一区别就是他们的过期时间。没有指定Expires(过期时间)时,默认为会话Cookie。
以简书为例:看下简书的会话Cookie和持久Cookie:

上图表明:jianshu.com的cookies
持久Cookie:
expires 过期时间为2018年4月9日星期二 Tue,09 Apr 2019 13:31:57 -0000
笔者猜测这个值表示的意思是当前的某个时间减去0000,以达到作为持久Cookie的目的
domain 为.jianshu.com
Path 为 /
Secure为YES
Http only 为true;
会话Cookie:
local:zh-CN 显示为简体;
包括会话Cookie,笔者以为关闭浏览器后会话Cookie就会消失,不过笔者的如下测试结果,不确定算不算是会话Cookie消失的一种体现。首次启动浏览器显示的会话Cookie为:
local:zh-CN;
path:/;
default_font:font1;
设置过繁体的情况:
local:zh-TW;
path:/;
default_font:font1;
然后刷新jianshu.com,显示内容,就只会显示
local:zh-CN
或是
local:zh-TW
不确定这个算不算是会话Cookie在关闭浏览器后,就消失了。读者也可以自己测试一下。有做服务端的同学知道的话,服务器托管敬请告知。
4
Cookie的工作流程
笔者仍以浏览器打开简书显示内容字体为“简体”或是“繁体”为例阐述Cookie的工作流程。
(1)当我们使用浏览器首次访问jianshu.com时,简书服务端不知道浏览器的信息,默认情况下,浏览器显示内容为“简体”。服务端对浏览器创建一个Session;
(2)当我们设置浏览器显示内容为“繁体”时,会通过Cookie的方式设置local为zh-TW,给服务端发送请求,并且得到的响应会是设置浏览器的显示内容为“繁体”,服务端同事会更新Session中的信息为zh-TW(繁体);
(3)当我们关闭浏览器,会话消失的情况下,然后我们再重新打开浏览器,发现简书的显示内容仍然会是繁体,笔者认为这个是因为简书服务端Session存储着浏览器应该显示字体,(比如服务端存储着浏览器的某个唯一的id,然后当重新打开浏览器,对服务端做请求时,服务端根据之前的Session下发繁体内容)。
5
Cookie的属性
Domain(域):Cookie的域;浏览器只向指定域中的服务器主机名发送Cookie,这样服务器就将Cookie限制在了特定的域中。jianshu.com域就与jianshu1.jianshu.com和jianshu1.jianshu2.jianshu.com相匹配,但与js.com就不匹配了。
Path(路径):通过这个属性可以为服务器上特定的文档分配Cookie,如果Path属性是一个URL路径前缀,就可以附加一个Cookie,路径/foo,与/foobar和foo/bar.html相匹配,路径"/"与域名中所有的内容都匹配。
Secure(安全):是否只有在HTTP使用SSL连接时才发送这个Cookie;
expires(过期):从格林尼治标准时间1970年1月1日00:00:00开始的过期秒数;
name(名字):Cookie变量的名字;
value(值):Cookie变量的值;
6
iOS中NSHTTPCookie
常用属性:
NSHTTPCookieDomain domain:cookie的域;
NSHTTPCookiePath path:Cookie的path;
NSHTTPCookiePort portList:Cookie的端口列表;
NSHTTPCookieName name:Cookie的名字;
NSHTTPCookieValue value:Cookie的值;
NSHTTPCookieVersion version: Cookie的版本;
NSHTTPCookieExpires expireDate:Cookie的过期时间;
NSHTTPCookieDiscard sessionOnly:一个布尔值,表示cookie是否应该在会话结束的时候被丢弃(不管过期日期);
HTTPOnly:指定客户端不要与JavaScript应用共享Cookie,以防止跨站脚本攻击;
NSHTTPCookieSecure secure:指定Cookie只会用在HTTPS连接而非HTTP连接;
properties:Cookie的属性;
NSHTTPCookiePropertyKey:定义cookie属性字典中支持的常量;
NSHTTPCookieComment comment:Cookie的说明文字
NSHTTPCookieCommentURL commentURL:cookie的说明URL;
NSHTTPCookieAcceptPolicy:Cookie的访问权限,NSHTTPCookie由NSHTTPCookieStorage管理。
NSHTTPCookieAcceptPolicyAlways:存储所有的cookie;
NSHTTPCookieAcceptPolicyNever:不会存储cookie;
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain:只保存域值和请求域相匹配的Cookie;
7
iOS 网络请求使用Cookie
客户端的请求头里边的cookie的header,key为"cookie"
服务端响应客户端的时候,响应头中的cookie的header,key为"set-cookie"
网络请求使用AFN携带Cookie 测试AFN网络请求携带Cookie,笔者使用的是访问juejin.im的时候携带Cookie,效果如下图:

相关代码如下:
NSString *urlString = @"https://juejin.im"; AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager]; sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; [sessionManager.requestSerializer setValue:@"QiShareNameAFN=QiShareValueAFN;QiShareTokenAFN=QiShareTokenValueAFN" forHTTPHeaderField:@"cookie"]; [sessionManager GET:urlString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];当需要设置多个cookie值的时候,使用cookieKey1=cookieValue1 ;cookieKey2=cookieValue2;的方式,使用分号分隔开每一对cookieKey及Value。
网络请求使用NSURLSession携带Cookie
测试NSURLSession网络请求携带Cookie,笔者使用的是访问jianshu.com的时候携带Cookie,效果如下图:

相关代码如下:
NSURL *url = [NSURL URLWithString:@"https://www.jianshu.com"]; NSMutableURLRequest *mRequest = [NSMutableURLRequest requestWithURL:url]; mRequest.HTTPMethod = @"GET”; [mRequest setValue:@"QiShareName=QiShareValue;QiShareToken=QiShareTokenValue" forHTTPHeaderField:@"cookie"]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:mRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { }]; [dataTask resume];源码:https://github.com/QiShare/QiNetwork
360云计算
由360云平台团队打造的技术分享公众号,内容涉及数据库、大数据、微服务、容器、AIOps、IoT等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享
很赞哦!(31)
相关文章
- cm域名有什么独特之处?新人要了解cm域名哪些?
- 线上系统查询一次要10s,我一怒优化了几百行的SQL
- 高效使用C语言
- 带你了解 Vue-Router 的两种路由模式
- 2016年1月1日:注册价格将降至每年7欧元。
- 当我准备用SpringEvent优雅的解耦时,连续两个Bug把我搞懵了
- RDBMS这个老古董,如何迁移?
- 深入聊聊MySQL直方图的应用
- 3、不明先知,根据相关征兆预测可能发生的事件,以便提前做好准备,赶紧注册相关域名。;不差钱域名;buchaqian抢先注册,就是这种敏感类型。预言是最敏感的状态。其次,你应该有眼力。所谓眼力,就是善于从社会上时不时出现的各种热点事件中获取与事件相关的域名资源。眼力的前提是对域名领域的熟悉和丰富的知识。
- 优化扩展分布式数据库的隔离级别
站长推荐
域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
Flowable 流程实例的挂起(暂停)与激活
预览:GNOME 42 中 GNOME Shell 的新 UI
深入聊一下 Const 关键字
第三,.cc域名域名也有很多优势资源域名,从整体注册基数也可以由此推断;
系统库-关于SQL Server Model Database探究
SpringBoot 实现 Excel 自由导入导出,性能强的离谱,用起来还特优雅
LeetCode之括号生成(Top 100)